我正在使用Java和Play框架实现与Bittrex API的连接。 在对API的一些调用中,我收到了“无效签名”错误。
这很奇怪,因为在大多数电话中,签名工作得很好,我已经检查过其他开源,我的签名功能是正确的。我注意到的是查询参数的顺序似乎很重要。使用WSRequest使用查询参数命令执行某些操作吗?
这是我的代码查找的示例:
String nonce = String.valueOf(System.currentTimeMillis());
String urlPath = "https://bittrex.com/api/v1.1/market/selllimit?apikey=API_KEY&market=BTC-LTC&quantity=1&rate=2&nonce=" + nonce;
WSRequest request = wsClient.url(urlPath);
String signature = getMessageSignature(urlPath);
request.addHeader("apisign", signature);
request.get();
正如我所说,我不认为getMessageSignature
是问题,因为我的签名大部分时间都有效。这个例子失败但是我会改变查询参数的顺序,所以URL将如下所示:
https://bittrex.com/api/v1.1/market/selllimit?market=BTC-LTC&quantity=1&apikey=API_KEY&rate=2&nonce=" + nonce;
然后一切正常,我没有收到错误。我甚至尝试了5个查询参数的所有120个排列,只有这个有效。如果Ii调试并使用120个选项中的任何一个进行签名并将请求放在Postman中,那么所有这些都可以工作,这就是为什么我认为它与框架有关。
非常感谢任何帮助(如果有人需要,可以添加签名功能)。