在POST没有有效载荷时遇到问题(python代码)

时间:2014-01-20 02:21:34

标签: python api post

我的脚本调用的代码是(这是api.py中的代码)

def post(url, data=None, **kwargs):
    """Sends a POST request. Returns :class:`Response` object.

    :param url: URL for the new :class:`Request` object.
    :param data: (optional) Dictionary, bytes, or file-like object to send in the body of the :class:`Request`.
    :param \*\*kwargs: Optional arguments that ``request`` takes.
    """
    return request('post', url, data=data, **kwargs)

现在我需要POST一个没有有效负载的请求,因为我需要发布的信息在url本身。我尝试了以下组合但失败了:

1)requests.post(url, auth, data=None)

失败说:

result = requests.post(api, auth, data=None)
TypeError: post() got multiple values for keyword argument 'data'   

2)requests.post(api, auth, data=payload)其中有效负载是空的json。

请建议..

2 个答案:

答案 0 :(得分:0)

问题是方法签名与您如何调用它之间的不兼容。

def post(url, data=None, **kwargs):
result = requests.post(api, auth, data=None)

首先,根据错误,它假设requests的保存是你编写的库(而不是Python请求模块),而不是类,因为你会得到一个完全不同的错误否则。

您的post方法有2个参数,urldata

你的调用有三个参数,python必须解压缩:变量apiauth以及命名参数data=None

Python将api分配给方法范围中的url变量,将auth分配给data变量。这在方法范围中留下了一个额外的名为data的变量,现在它正在尝试再次分配。

因此错误:

post() got multiple values for keyword argument 'data'   

答案 1 :(得分:0)

传递的auth param被函数接受为数据一。然后你再次传递数据,作为关键字参数。

result = requests.post(api, auth, data=None)
TypeError: post() got multiple values for keyword argument 'data'   

试试这个:

result = requests.post(api, auth=auth)