为什么我用 Python 3 从 Poloniex API 得到 'invalid command'?
Why am I getting 'invalid command' from Poloniex API with Python 3?
我正在尝试使用我的 Poloniex API 密钥和密钥来检查我的帐户余额。但是,我不断收到“invalid command
”作为响应返回。
下面是我在 Python3 中的代码:
command = 'returnBalances'
req['command'] = command
req['nonce'] = int(time.time()*1000)
post_data = urllib.parse.urlencode(req).encode()
sign = hmac.new(str.encode(self.Secret), post_data, hashlib.sha512).hexdigest()
headers = {
'Sign': sign,
'Key': self.APIKey
}
print(post_data)
req = urllib.request.Request(url='https://poloniex.com/tradingApi', headers=headers)
res = urllib.request.urlopen(req, timeout=20)
jsonRet = json.loads(res.read().decode('utf-8'))
return self.post_process(jsonRet)
print(post_data)
returns 我希望看到的内容:
b'nonce=1491334646563&command=returnBalances'
我想您必须将 post_data
与请求一起发送。我喜欢直接使用 requests
库而不是 urllib
,但它应该是这样的 urllib
:
req = urllib.request.Request('https://poloniex.com/tradingApi', post_data, headers)
发送Content-Typeheader
这个 excellent article 为我指明了正确的方向。出现python3的请求库跳过发送Content-Typeheader,导致Polo拒绝请求
'Content-Type': 'application/x-www-form-urlencoded'
headers:
headers = {
'Sign': hmac.new(SECRET.encode(), post_data, hashlib.sha512).hexdigest(),
'Key': API_KEY,
'Content-Type': 'application/x-www-form-urlencoded'
}
我正在尝试使用我的 Poloniex API 密钥和密钥来检查我的帐户余额。但是,我不断收到“invalid command
”作为响应返回。
下面是我在 Python3 中的代码:
command = 'returnBalances'
req['command'] = command
req['nonce'] = int(time.time()*1000)
post_data = urllib.parse.urlencode(req).encode()
sign = hmac.new(str.encode(self.Secret), post_data, hashlib.sha512).hexdigest()
headers = {
'Sign': sign,
'Key': self.APIKey
}
print(post_data)
req = urllib.request.Request(url='https://poloniex.com/tradingApi', headers=headers)
res = urllib.request.urlopen(req, timeout=20)
jsonRet = json.loads(res.read().decode('utf-8'))
return self.post_process(jsonRet)
print(post_data)
returns 我希望看到的内容:
b'nonce=1491334646563&command=returnBalances'
我想您必须将 post_data
与请求一起发送。我喜欢直接使用 requests
库而不是 urllib
,但它应该是这样的 urllib
:
req = urllib.request.Request('https://poloniex.com/tradingApi', post_data, headers)
发送Content-Typeheader
这个 excellent article 为我指明了正确的方向。出现python3的请求库跳过发送Content-Typeheader,导致Polo拒绝请求
'Content-Type': 'application/x-www-form-urlencoded'
headers:
headers = {
'Sign': hmac.new(SECRET.encode(), post_data, hashlib.sha512).hexdigest(),
'Key': API_KEY,
'Content-Type': 'application/x-www-form-urlencoded'
}