我的脚本调用的代码是(这是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。
请建议..
答案 0 :(得分:0)
问题是方法签名与您如何调用它之间的不兼容。
def post(url, data=None, **kwargs):
result = requests.post(api, auth, data=None)
首先,根据错误,它假设requests
的保存是你编写的库(而不是Python请求模块),而不是类,因为你会得到一个完全不同的错误否则。
您的post
方法有2个参数,url
和data
。
你的调用有三个参数,python必须解压缩:变量api
和auth
以及命名参数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)