我正在做一个直截了当的请求如下
import requests
def user_transactions():
url = 'https://webapi.coinfloor.co.uk/v2/bist/XBT/GBP/user_transactions/'
data = {'key':'value'}
r = requests.post(url, data=data, auth=("some_username", "some_password") )
print(r.status_code)
print(r.text)
return
即使data=
在文档中是可选的。
https://www.w3schools.com/python/ref_requests_post.asp
data
变量,则例程返回
status_code=415
错误李>data
变量中包含status_code=200
成功李>我试着在这里查找,例如: Python request gives 415 error while post data,但没有回答
问题是:为什么[1]失败而[2]奏效
是的,
data
在python端是可选的。正如您所看到的,requests
库将愉快地向服务器发送一个空请求。如果参数不是可选的,则程序将在发送请求之前崩溃,因此没有状态代码但是,服务器需要能够处理请求。如果它不喜欢您出于任何原因发送的内容,它可能会发回一个4xx状态码,或者不按照您的期望执行
在这种情况下,它抛出一个错误,即数据的格式无效。一个空请求怎么可能是无效格式?因为格式是在标题中指定的。如果提供数据参数
requests
将以URL编码的格式发送数据,并在标题中指定数据的格式。如果数据为空,则请求将为空,但标头仍将存在。此站点显然需要标头指定它知道的数据格式可以通过两种方式解决此问题,即给定一个空对象:
或者通过显式指定标头:
旁注:您不应该使用W3Schools作为源。它经常是不准确的,并且经常推荐不好的做法
我认为你把requests.post函数签名的文档和API文档弄错了。这意味着数据是一个关键字参数,而不是API选择性地获取数据
这取决于您尝试使用的API端点。该端点必须要求随请求一起发送数据。如果您查看正在使用的API的文档,它将提到有效请求需要发送的内容
相关问题 更多 >
编程相关推荐