请求中的 HMAC apisign headers 但 headers 必须是 str 错误?
HMAC apisign in a requests headers but headers must be str error?
apikey = '$mykey'
apisecret = '$mykeysecret'
nonce = str(int(time.time() * 1000))
uri = 'https://somewebsite.com/api/v1.5/account/getbalances?apikey='+apikey+'&nonce='+nonce
sign = hmac.new(b'apisecret', b'uri', hashlib.sha512)
response = requests.get(uri, headers={'apisign': sign}, timeout=10)
print(json.dumps(response, sort_keys=True, indent=4))
""" The following are the example provided by the website """
# $ch = curl_init($uri);
# curl_setopt($ch, CURLOPT_HTTPHEADER, array('apisign:'.$sign));
# $execResult = curl_exec($ch);
# $obj = json_decode($execResult);
# url = "https://somewebsite.com/api/v1.5/account/getbalances?apikey=API_KEY"
经过 2 小时的研究,我无法解决这个问题。它现在说 headers 需要是 str。但是使用 str{'apisign': sign} 它说 str object 没有项目。
您正在将字典正确地传递给 headers 参数,但错误是说 sign
的值不是字符串。 sign
是一个 HMAC object,需要转换成字符串:
>>> print(sign)
<hmac.HMAC object at 0x03337950>
我会看一下调用 sign.digest()
看它是否 returns 您期望的字符串。如果是,那么您可以将 headers={'apisign': sign}
替换为 headers={'apisign': sign.digest()}
.
apikey = '$mykey'
apisecret = '$mykeysecret'
nonce = str(int(time.time() * 1000))
uri = 'https://somewebsite.com/api/v1.5/account/getbalances?apikey='+apikey+'&nonce='+nonce
sign = hmac.new(b'apisecret', b'uri', hashlib.sha512)
response = requests.get(uri, headers={'apisign': sign}, timeout=10)
print(json.dumps(response, sort_keys=True, indent=4))
""" The following are the example provided by the website """
# $ch = curl_init($uri);
# curl_setopt($ch, CURLOPT_HTTPHEADER, array('apisign:'.$sign));
# $execResult = curl_exec($ch);
# $obj = json_decode($execResult);
# url = "https://somewebsite.com/api/v1.5/account/getbalances?apikey=API_KEY"
经过 2 小时的研究,我无法解决这个问题。它现在说 headers 需要是 str。但是使用 str{'apisign': sign} 它说 str object 没有项目。
您正在将字典正确地传递给 headers 参数,但错误是说 sign
的值不是字符串。 sign
是一个 HMAC object,需要转换成字符串:
>>> print(sign)
<hmac.HMAC object at 0x03337950>
我会看一下调用 sign.digest()
看它是否 returns 您期望的字符串。如果是,那么您可以将 headers={'apisign': sign}
替换为 headers={'apisign': sign.digest()}
.