我在编码方面很陌生,希望我能得到如何解决问题的建议。 我正在编写一个 java 代码来连接到 trade.io API,但我无法弄清楚如何使用"POST"和"DELETE"向交易所提交正确的加密消息。
到目前为止,我设法弄清楚如何使用"GET"接收信息,但在其他方面没有成功。
这是我到目前为止写的:
/*
* CancelOrder cancels an existing order ==> This doesn't work!
*/
public String CancelOrder(String orderId) throws MalformedURLException,
IOException {
return signAndSend("/order/" + orderId, "DELETE");
}
/*
* Reads the open orders in the account ==> This works!
*/
public String getOpenOrders(String symbol) throws MalformedURLException,
IOException {
return signAndSend("/openOrders/" + symbol, "GET");
}
/*
* Signs and Sends signature. This method is called when signature is
needed.
*/
private String signAndSend(String url, String method) throws
MalformedURLException, IOException {
String nonce = String.valueOf(System.currentTimeMillis());
String baseUrl = UrlTradeio.urlV1;
String ts = "?ts=" + nonce;
String sign = hmac512Digest(ts, TRADEIO_SECRET_KEY).toUpperCase();
HttpURLConnection con = (HttpURLConnection) new URL(baseUrl + url + ts).openConnection();
con.setRequestProperty("Sign", sign);
con.setRequestProperty("Key", TRADEIO_API_KEY);
con.setRequestMethod(method);
con.connect();
InputStream response = con.getInputStream();
//
try (Scanner scanner = new Scanner(response)) {
String responseBody = scanner.next();
return responseBody;
}
}
交流在这里提供了非常全面的 C# 示例:
https://github.com/tradeio/api-csharpclient/blob/master/Tradeio.Client/TradeioApi.cs
这是"getOpenOrders"的输出以及我尝试关闭时出现的错误消息。
ktos_eth未结订单是:{"代码":0,"时间戳":1559338453064,"订单":[{"orderId":"-72057593948251267","总计":"0.0","订单类型":"限制","佣金":"0.0","创建于":"2019-01-23T17:36:55.8633777Z","单位填充":"0.0","待定":true,"状态":"正在处理","类型":"出售","请求金额":"75.0","基数金额":"0.0","报价金额":"0.0","价格":"0.00014000","isLimit":true,"loanRate":"0.0","rateStop":"0.0","instrument":"ktos_eth","requestPrice":"0.00014000","剩余金额":"75.0"}]}
线程"main"java.io.IOException中的异常:服务器返回HTTP响应代码:403,网址:https://api.exchange.trade.io/api/v1/order/-72057593948251267?ts=1559338452695 at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1913)
提前感谢您的调查
干杯 亚历克斯
所以 -403 表示您经过正确身份验证并且被系统知道 - 但系统确定您缺少权限。从本质上讲,它找到了您作为用户 - 但说您无法访问您想要做的事情。有关状态代码的更多信息,请参阅此处 https://httpstatuses.com/
以前使用过这些 API 密钥 - 我想知道您是否没有设置 API 密钥来允许您执行为您提供 403 的操作。
我建议您查看您在加密站点上创建的 API 密钥。确保您不仅有一个密钥 - 而且您已启用该密钥以用于您想要的操作。看起来 trade.io 称它们为"权限",可以在此处查看 https://trade.io/en/api。
我的猜测是您只为该密钥启用了"读取访问权限",而不是"交易"。
欢迎来到堆栈溢出:-)。