Binance API账户查询报错:QueryString格式异常,求排查
解决Binance API v3账户查询的QueryString格式异常问题
我帮你排查了代码里的几个关键问题,正是这些导致了QueryString格式异常:
错误1:URL中误用HTML实体
&
你在拼接URL参数时用了&,这是HTML场景下的转义字符,但直接放到API请求的URL里会被当成参数的一部分,Binance API无法正确解析。应该直接用普通的&来连接多个Query参数。错误2:签名未转换为正确的十六进制格式
CryptoJS的HmacSHA256返回的是WordArray对象,而Binance API要求签名是十六进制字符串。你需要调用toString(CryptoJS.enc.Hex)把生成的哈希值转成符合要求的字符串格式,否则签名会完全无效。额外提醒:时间同步问题
Binance API要求请求的timestamp与服务器时间差不能超过5000毫秒,如果本地设备时间偏差过大,也会触发请求失败,这个可以后续验证。
修正后的代码如下:
var apiKey = 'myAPIKey'; var secret = 'mySecret'; var queryString = 'timestamp=' + Date.now(); // 将哈希对象转为Binance要求的十六进制字符串签名 var hash = CryptoJS.HmacSHA256(queryString, secret).toString(CryptoJS.enc.Hex); // 使用普通&连接参数,移除HTML转义实体 var url = 'https://api.binance.com/api/v3/account?' + queryString + '&signature=' + hash; $('.botonOrden').click(function(){ $.ajax({ beforeSend: function(req){ req.setRequestHeader("X-MBX-APIKEY", apiKey); }, type: 'GET', url: url }) .done(function(response) { console.log('账户信息:', response); }) .fail(function(error) { console.error('请求失败:', error.responseText); }); });
你可以试试这段修正后的代码,应该能解决QueryString格式异常的问题。如果还有报错,建议查看请求返回的错误信息,Binance API通常会给出非常具体的问题说明。
内容的提问来源于stack exchange,提问作者Bravo Vlog Hector Bravo
相关产品推荐
相关产品推荐

