Bittrex API 加密货币交易者:php 到 Java 的转换

Posted

技术标签:

【中文标题】Bittrex API 加密货币交易者:php 到 Java 的转换【英文标题】:Bittrex API Cryptocurrency trader: php to Java conversion 【发布时间】:2015-10-31 13:56:01 【问题描述】:

我一直在从事货币交易计划。该程序基于Bittrex API。但是,我在翻译php代码时遇到了问题:

$apikey='xxx';
$apisecret='xxx';
$nonce=time();
$uri='https://bittrex.com/api/v1.1/market/getopenorders?apikey='.$apikey.'&nonce='.$nonce;
$sign=hash_hmac('sha512',$uri,$apisecret);
$ch = curl_init($uri);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('apisign:'.$sign));
$execResult = curl_exec($ch);
$obj = json_decode($execResult);

进入 Java 代码。到目前为止,这是我所拥有的:

String apikey = "xxx";
String apisecret = "xxx";
String nonce = String.valueOf(System.currentTimeMillis());
String uri = "https://bittrex.com/api/v1.1/market/getopenorders?apikey=" + apikey + "&nonce=" + nonce;

Mac mac = Mac.getInstance("HmacSHA512");
SecretKeySpec secret = new SecretKeySpec(apisecret.getBytes(),"HmacSHA512");
mac.init(secret);
byte[] digest = mac.doFinal(uri.getBytes());
String sign = new String(digest);

HttpURLConnection con = (HttpURLConnection) new URL(uri).openConnection();
con.setRequestProperty("apisign", sign); // << very confused
con.setRequestMethod("GET");
con.connect();

con.getInputStream(); // << Exception is thrown

我收到错误消息:服务器返回 HTTP 响应代码:400。所以我知道我将发送到服务器的数据弄乱了。我认为问题在于代码的最后一个“段落”,因为我试图解释来自this question 的代码。此外,代码的第二“段”背后的推理诞生于here。然后,我计划按照here 的说明阅读回复。

【问题讨论】:

【参考方案1】:

在放入 http 标头之前,您需要对您的符号进行十六进制处理。

String sign = org.apache.commons.codec.binary.Hex.encodeHexString(digest);

【讨论】:

好吧,我试着把这行写上去,android Studio 把它标记为红色。它也不允许导入 org.apache.commons.codec.binary.Hex。 我认为您需要添加对该工件的依赖。例如在 Maven pom xml 中: commons-codeccommons-codec$commons.codec.version 但是我不知道如何在 Android 中做到这一点。

以上是关于Bittrex API 加密货币交易者:php 到 Java 的转换的主要内容,如果未能解决你的问题,请参考以下文章

加密货币交易所 API 框架 CCXT

加密货币交易所 API 框架 CCXT

CCXT:加密货币量化交易神器

8个PHP显示加密货币市场实时价格的脚本

用 Python 和币安 API 构建数字货币交易机器人

干货丨如何使用DolphinDB回放加密货币盘口与逐笔交易数据