auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く
はじめに
前記事
auカブコム証券のkabuステーションREST APIをcurlで叩く
auカブコム証券のkabuステーションREST APIをjava(generated by the swagger code generator)で叩く
2本の前記事は、REST APIに関する基本的なことで、これだけ知っていれば、だいたいどんなAPIでも使えるはずですが、もうちょっと続けてみます。
今回は、残高照会です。
実際、残高なんて、Webアプリで表示しても、専用Windowsアプリで表示しても、スマホアプリで表示しても、同じ金額なので、わざわざ自作アプリを作る物好きはいないですが、この次に先物OPのGreeks(デルタ、ガンマ、シータ、ベガ)の集計値を表示したいための準備です。
事前準備
前記事2本が動いていれば、本編は5分で終わります。
ツール
変わっていないので省略。
curl
QUERY PARAMETERに赤字でrequiredが付いていないので、すべて省略可能です(optional)。
認証TOKENだけHTTPヘッダに指定します。
curl -H "X-API-KEY: %TOKEN%" "http://localhost:18080/kabusapi/positions"
成功するとJSON配列が返ります。
[{"ExecutionID":null,"AccountType":4,...
java
InfoApiTestクラスにpositionsGetTest()があります。
X_API_KEY以外はnullのままでOKです。
実行してみると・・・
[]
0件だった人は、ちゃんと「追記:検証用APIに切り替え方法」の修正までした状態のソースに足した状態で、検証用APIは空しか返りません。
余計な部分を削って、認証+残高照会のみのソースは以下になります。
System.out.println(response);しても、リストを配列のように表示してくれますが、index番号があった方が件数も分かっていいかなと。。。
public class Main {
private static AuthApi authApi = new AuthApi();
private static InfoApi infoApi = new InfoApi();
public static void main(String[] args) throws ApiException {
String token = null;
{
RequestToken body = new RequestToken();
body.setApIPassword("YourPassword");
TokenSuccess response = authApi.tokenPost(body);
System.out.println(response);
token = response.getToken();
}
{
String X_API_KEY = token;
String product = null;
String symbol = null;
String side = null;
String addinfo = null;
List<PositionsSuccess> response = infoApi.positionsGet(X_API_KEY, product, symbol, side, addinfo);
// TODO: test validations
for (int i = 0; i < response.size(); i++) {
System.out.println((i + 1) + ": " + response.get(i));
}
}
}
}
実行結果
class TokenSuccess {
resultCode: 0
token: af3ceea25419422288eb022278b78089
}
1: class PositionsSuccess {
executionID: null
accountType: 4
:
おまけ
認証済TOKEN管理クラスを用意すれば、アプリ側にauthApi変数は要らんな。
次回直そうと思ったが、APIと関係ないので、最後にリファクタリングしておく。
AuthorizedTokenクラスを新規に作る。
マルチスレッドを想定していないので、initToken()メソッドを同期していない。
そもそもREST APIがマルチスレッドで呼べるのか知らんし。。。
token == nullのときに認証するが、その後、永遠にTOKENが有効という前提となっている。
public class AuthorizedToken {
private static AuthorizedToken singleton = new AuthorizedToken();
public static AuthorizedToken getInstance() {
return singleton;
}
public static String getToken() throws ApiException {
return singleton.initToken();
}
private String token = null;
private AuthorizedToken() {
}
public String initToken() throws ApiException {
if (token == null) {
AuthApi authApi = new AuthApi();
RequestToken body = new RequestToken();
body.setApIPassword("YourPassword");
TokenSuccess response = authApi.tokenPost(body);
System.out.println(response);
token = response.getToken();
}
return token;
}
}
残高照会のメインは前半が無くなる。
public class Main {
private static InfoApi infoApi = new InfoApi();
public static void main(String[] args) throws ApiException {
{
String X_API_KEY = AuthorizedToken.getToken();
String product = null;
String symbol = null;
String side = null;
String addinfo = null;
List<PositionsSuccess> response = infoApi.positionsGet(X_API_KEY, product, symbol, side, addinfo);
// TODO: test validations
for (int i = 0; i < response.size(); i++) {
System.out.println((i + 1) + ": " + response.get(i));
}
}
}
}
Author And Source
この問題について(auカブコム証券のkabuステーションREST APIの残高照会をcurlとjavaで叩く), 我々は、より多くの情報をここで見つけました https://qiita.com/hiuchida/items/9eb5336755a3d1b1a3df著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .