Java 正在连接到加密交换api。“时出错”;标志及;“发送”;消息使用方法”;邮政「;或;删除“;?

Java 正在连接到加密交换api。“时出错”;标志及;“发送”;消息使用方法”;邮政「;或;删除“;?,java,Java,我在编码方面是个新手,希望能得到一个解决问题的建议。 我正在编写一个java代码来连接trade.ioAPI,但我不知道如何使用“POST”和“DELETE”向exchange提交正确的加密消息 到目前为止,我设法解决了如何通过“GET”接收信息,但在其他方面没有成功 以下是我到目前为止写的内容: /* * CancelOrder cancels an existing order ==> This doesn't work! */ public String CancelOrde

我在编码方面是个新手,希望能得到一个解决问题的建议。 我正在编写一个java代码来连接trade.ioAPI,但我不知道如何使用“POST”和“DELETE”向exchange提交正确的加密消息

到目前为止,我设法解决了如何通过“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#中提供了非常详尽的例子:

这是“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)

提前感谢您的调查

干杯
Alex

So-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功能,死胡同。干杯,阿列克斯