Python 3.6.1使用HMAC-SHA512发布poloniex交易api的请求

时间:2017-04-17 16:23:20

标签: python

我是Python新手并使用3.6版本。

我希望我可以使用HMAC-SHA512为poloniex trading api编写Python 3.6.1 Post请求的代码

这是poloniex文档:https://poloniex.com/support/api/

显然,它与正常的api get请求不同。这是我的参数。

import urllib.request
import urllib.parse
import hmac
import hashlib
import time

key = '<api key>'
secret = '<secret>' #must sign by your key's "secret" according to the HMAC-SHA512 method
command = 'returnBalances'
nonce = int(time.time())

下一步该怎么做? 我不明白如何使用HMAC-SHA512&amp;如何正确发送POST请求。 感谢。

2 个答案:

答案 0 :(得分:0)

帮自己一个忙,并使用requests模块进行HTTP。

使用D:\YOTTA\BAR\BAZ\QUUX\NEWthis answer向您展示如何在Python中使用HMAC-SHA512请求。

答案 1 :(得分:0)

我试图重现如下。但是,看起来我遇到了错误。

{'command': 'returnBalances', 'nonce': 1492523610}
command=returnBalances&nonce=1492523610
Traceback (most recent call last):
  File "C:/Users/draft/Desktop/test3.py", line 21, in <module>
    signing = hmac.new(secret, post_data, hashlib.sha512).hexdigest()
  File "C:\Users\draft\AppData\Local\Programs\Python\Python36-32\lib\hmac.py", line 144, in new
    return HMAC(key, msg, digestmod)
  File "C:\Users\draft\AppData\Local\Programs\Python\Python36-32\lib\hmac.py", line 84, in __init__
    self.update(msg)
  File "C:\Users\draft\AppData\Local\Programs\Python\Python36-32\lib\hmac.py", line 93, in update
    self.inner.update(msg)
TypeError: Unicode-objects must be encoded before hashing

在您的帮助下完成学习后,这是我的完整代码。

import urllib.request
import urllib.parse
import hmac
import hashlib
import time
import json

t = int(time.time())
secret = b'<secret>'
headers = { 'Key' : '<api key>',
            'Sign': ''}
url = 'https://poloniex.com/tradingApi'
req={}

req['command'] = 'returnBalances'
req['nonce'] = int(time.time())
#print (req)

post_data =  urllib.parse.urlencode(req)
#print (post_data)
signing = hmac.new(secret, post_data, hashlib.sha512).hexdigest()
#print (signing)
headers['Sign'] = signing

ret = urllib.request.Request(url, data, headers)
#print (ret)


ret = urllib.request.urlopen(ret)
a = json.loads(ret.read())
#print (a)

任何人都可以查看我的代码吗? 我相信我使用&#34; urllib.parse.urlencode&#34;进行编码 非常感谢你。