我正在使用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中,那么所有这些都可以工作,这就是为什么我认为它与框架有关 .

任何帮助将不胜感激(如果有人需要,可以添加签名的功能) .