如何修正Python requests发送POST请求时的400错误?
问题排查与修复
你的代码存在两个关键问题,导致POST请求返回400错误:
- 请求体传递错误:你将
myObj2用引号包裹成了字符串,这会把字符串"myObj2"作为请求体发送,而非实际的字典数据。应直接传入字典变量myObj2,而非字符串形式。 - 请求体格式不匹配:目标API大概率要求JSON格式的请求体,而使用
data参数传递字典时,requests会自动将其编码为表单格式(application/x-www-form-urlencoded),这不符合API的接收要求。
修复后的代码如下:
import requests # 确保已导入requests库 headers = { "User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Mobile Safari/537.36" } telefoongids_input = "https://www.detelefoongids.nl/api/search/index" myObj2 = {"who":"John", "where": "Amsterdam", "page": 0} # 使用json参数自动将字典序列化为JSON格式,并添加正确的Content-Type请求头 b = requests.post(url=telefoongids_input, json=myObj2, headers=headers ) b1 = b.text print(b1)
额外提示:
- 若仍报错,可打印
b.status_code和b.json()(若返回JSON格式响应)查看详细错误信息,多数API会在400响应中说明具体的参数问题。
内容的提问来源于stack exchange,提问作者Javar Place
相关产品推荐
相关产品推荐

