Java 正在连接到加密交换api。“时出错”;标志及;“发送”;消息使用方法”;邮政「;或;删除“;?
我在编码方面是个新手,希望能得到一个解决问题的建议。 我正在编写一个java代码来连接trade.ioAPI,但我不知道如何使用“POST”和“DELETE”向exchange提交正确的加密消息 到目前为止,我设法解决了如何通过“GET”接收信息,但在其他方面没有成功 以下是我到目前为止写的内容:Java 正在连接到加密交换api。“时出错”;标志及;“发送”;消息使用方法”;邮政「;或;删除“;?,java,Java,我在编码方面是个新手,希望能得到一个解决问题的建议。 我正在编写一个java代码来连接trade.ioAPI,但我不知道如何使用“POST”和“DELETE”向exchange提交正确的加密消息 到目前为止,我设法解决了如何通过“GET”接收信息,但在其他方面没有成功 以下是我到目前为止写的内容: /* * CancelOrder cancels an existing order ==> This doesn't work! */ public String CancelOrde
/*
* 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#中提供了非常详尽的例子:
这是“getOpenOrders”的输出以及我试图关闭它时的错误消息
未结订单为:{“代码”:0,“时间戳”:1559338453064,“订单”:[{“订单ID”:“-72057593948251267”,“总计”:“0.0”,“订单类型”:“限额”,“佣金”:“0.0”,“创建日期”:“2019-01-23T17:36:55.8633777Z”,“单位填写”:“0.0”,“isPending”:true,“状态”:“工作”,“类型”:“销售”,“请求的数量”:“75.0”,“基本金额”:“0.0”,“报价金额”:“0.0”,“价格”:“0.00014000”,“isLimit”:true,“loanRate:“0.0”,“rateStop:“0.0”,“instrument:“ktos_eth”,“requestedPrice:“0.00014000”,“remainingAmount:“75.0”}]
线程“main”java.io.IOException中的异常:服务器返回了URL的HTTP响应代码:403:
位于java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1913)
提前感谢您的调查
干杯
AlexSo-403表示您已通过正确的身份验证,并且系统知道您,但系统确定您缺乏权限。实际上,它发现您是一名用户,但表示您无权访问您想要执行的操作。有关状态代码的更多信息,请参见此处 以前使用过这些API键-我想知道您是否没有设置API键来执行为您提供403的操作 我建议查看您在crypto站点上创建的API密钥。确保您不仅拥有密钥,而且已启用该密钥以用于您想要的操作。看起来trade.io将其称为“权限”,可以在此处查看 我的猜测是,您只为该密钥启用了“读取访问”,而不是“交易”
欢迎使用Stack Overflow:-)。So-403表示您已正确身份验证,并且系统知道您,但系统确定您缺乏权限。实际上,它发现您是一个用户,但表示您无权访问您想要执行的操作。有关状态代码的更多信息,请参见此处 以前使用过这些API键-我想知道您是否没有设置API键来执行为您提供403的操作 我建议查看您在crypto站点上创建的API密钥。确保您不仅拥有密钥,而且已启用该密钥以用于您想要的操作。看起来trade.io将其称为“权限”,可以在此处查看 我的猜测是,您只为该密钥启用了“读取访问”,而不是“交易”
欢迎来到Stack Overflow:-)。你说得对,我重新生成了键,删除函数也正常工作。我仍然面临使用“POST”方法提交数据的问题。它返回了一个错误411(内容长度),我试图通过添加:
con.setDoOutput(true);con.setFixedLengthStreamingMode(6)来解决它
现在我在写不完整的数据时遇到了一个错误,我尝试了以下方法:公共字符串PlaceOrder(字符串符号、字符串侧面、字符串类型、字符串数量、字符串价格)抛出了错误的字符串异常,IOException{LinkedHashMap form=new LinkedHashMap();form.put(“符号”,symbol);form.put(“侧面”);form.put(“侧面”);form.put(“类型“,键入);form.put(“数量”,数量);form.put(“价格”,价格);return signAndSend(“/order”,form,“POST”);}
首先-如果我的答案解决了您的问题-然后将其标记为解决方案,这样我的时间就得到了认可。如果你现在有一个全新的问题-考虑一个新的问题。但是,一个简单的谷歌搜索的411错误给了你应该尝试的东西-我关闭了线程,谢谢你的回复。它至少解决了一半的问题。我尝试了所有我能想到的POST功能,死胡同。干杯,AleksYou是对的,我重新生成了键,删除函数也工作了。我仍然面临使用“POST”方法提交数据的问题。它返回了一个错误411(内容长度),我试图通过添加:con.setDoOutput(true)来解决它;con.设置固定长度流化模式(6)代码>现在我在写不完整的数据时遇到了一个错误,我尝试了以下方法:公共字符串PlaceOrder(字符串符号、字符串边、字符串类型、字符串数量、字符串价格)抛出了错误的字符串异常,IOException{LinkedHashMap form=new LinkedHashMap();form.put(“symbol”,symbol);form.put(“side”,side);form.put(“type”,type);form.put(“数量”,数量);form.put(“价格”,价格);return signAndSend(“/order”,form,“POST”);}
首先-如果我的答案解决了您的问题-然后将其标记为解决方案,这样我的时间就得到了认可。如果你现在有一个全新的问题-考虑一个新的问题。但是,一个简单的谷歌搜索的411错误给了你应该尝试的东西-我关闭了线程,谢谢你的回复。它至少解决了一半的问题。我尝试了所有我能想到的POST功能,死胡同。干杯,阿列克斯