0

我正在使用带有 Play 框架的 Java 实现与 Bittrex API 的连接。在对 API 的一些调用中,我收到“无效签名”错误。

这很奇怪,因为在大多数调用中,签名工作都很好,而且我已经检查过其他开源并且我的签名功能是正确的。我注意到查询参数的顺序似乎很重要。Play using 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 种排列,只有这一个有效。如果我使用 120 个选项中的任何一个进行调试并获取签名并将请求放入 Postman,那么它们都可以工作,这就是为什么我认为它与框架有关。

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

4

0 回答 0