Python Poloniex API返回错误422

时间:2018-05-07 19:30:59

标签: python-3.x poloniex

我有方法,应该通过他们的API从Poloniex返回余额。代码如下。

 def getBalance(self):
        polo_data = {"command": "returnBalances", "nonce": int(time.time() * 1000)}
        post_data = urllib.parse.urlencode(polo_data).encode()
        sig =  hmac.new(str.encode(self.SETTINGS.PRIVATE_KEY), post_data, hashlib.sha512).hexdigest()

        headers = {
            "Key": self.SETTINGS.PUBLIC_KEY,
            "Sign": sig}
        req = urllib.request.Request(self.SETTINGS.BASE_URI + self.SETTINGS.TRADE_DIR,
                                           data=post_data, headers=headers)
        try:
            res = urllib.request.urlopen(req)
            result =  json.loads(res.read().decode('utf-8'))
            print(result)
        except urllib.error.HTTPError as e:
            print(f'Headers: {e.headers}')
            print(f'Status: {e.status}')
            print(f'MSG: {e.msg}')
            print(f'reason: {e.reason}')
            print(f'url: {e.url}')
            print(f'Name: {e.name}')

当我运行此代码时,我返回消息 HTTPError 422 我认为问题与post_data有关。我尝试对请求做同样的事情我收到错误消息:“错误:无效命令”但我无法理解究竟在哪里。从另一方面来看,买/卖订单命令的相同代码就像魅力一样。

我使用 Python 3.6.1

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我找到了我的问题的决定。问题出现在nonce中。正确的代码是:

int(time.time() * 10000) 

不是 1000 ,而是 10000