Python请求,无属性';车身';

Python请求,无属性';车身';,python,rest,http,post,python-requests,Python,Rest,Http,Post,Python Requests,我正在尝试运行与此问题类似的代码: 我有以下代码: import requests import hmac import hashlib from itertools import count import time headers = { 'nonce': '', 'Key' : 'myKey', 'Sign': '',} payload = { 'command': 'returnCompleteBalances', 'account

我正在尝试运行与此问题类似的代码:

我有以下代码:

import requests
import hmac
import hashlib
from itertools import count
import time

headers = { 'nonce': '',
        'Key' : 'myKey',
        'Sign': '',}
payload = { 'command': 'returnCompleteBalances',
            'account': 'all'}
secret = 'mySecret'

NONCE_COUNTER = count(int(time.time() * 1000))
headers['nonce'] = next(NONCE_COUNTER)

request = requests.Request(
    'POST', 'https://poloniex.com/tradingApi',
    params=payload, headers=headers)
signature = hmac.new(secret, request.body, digestmod=hashlib.sha512)
request.headers['Sign'] = signature.hexdigest()

with requests.Session() as session:
    response = session.send(request)
以下一行:

signature = hmac.new(secret, request.body, digestmod=hashlib.sha512)

抛出此错误:'Request'对象没有属性'body'

您的源代码有几个问题:

  • 对于POST方法,不能使用参数
    params
    ,但需要参数
    data
  • 如前所述,您需要
    .prepare()
    方法
  • 参数
    nonce
    也需要在
    payload
    中指定,而不是在
    标题中指定
  • 这应该起作用:

    import requests
    import hmac
    import hashlib
    from itertools import count
    import time
    
    NONCE_COUNTER = count(int(time.time() * 1000))
    
    headers = { 'Key' : 'myKey',
                'Sign': '',}
    
    payload = { 'nonce': next(NONCE_COUNTER),
                'command': 'returnCompleteBalances',
                'account': 'all'}
    
    secret = 'mySecret'
    
    
    request = requests.Request(
        'POST', 'https://poloniex.com/tradingApi',
        data=payload, headers=headers).prepare()
    signature = hmac.new(secret, request.body, digestmod=hashlib.sha512)
    request.headers['Sign'] = signature.hexdigest()
    
    
    with requests.Session() as session:
        response = session.send(request)
    

    Try:request.content我收到一个类似的错误:“request”对象没有属性“content”Try request.text尝试在请求对象中添加.prepare():request=requests.request('POST','',params=payload,headers=headers)。prepare()请求=requests.request('POST','',params=payload,headers=headers)。prepare()这似乎在保持请求的同时起作用