接口请求400错误:Request failed with st
问题现象
在用python写自动化脚本时,接口调用,返回"Request failed with status code 400"错误,同样的参数使用postman返回正常,代码如下。
import requests
url = 'https://xxx.xxx.cn/api/mini/search/wordv2'
data = {"txt":"word","uuid":"xxxx","isFirst":1}
re = requests.post(url,data).text
print(re)
代码返回结果
{"errcode":-1,"errmsg":"Error: Request failed with status code 400"}
分析
从postman中获取python代码查看,如下为查看方式以及结果
查看方式 查看结果通过分析postman调用的参数发现,data为json格式,且在参数设置headers将请求数据以json的格式发送。
requests中,设置headers参数{‘Content-Type’: ‘application/json’ },是将请求数据以json的格式发送,而headers中默认请求方式是表单提交:{‘Content-Type’: ‘application/x-www-form-urlencoded’ };
修改后的代码
修改后的执行结果import requests
import json
url = 'https://xxx.xxx.cn/api/mini/search/wordv2'
data = json.dumps({"txt":"word","uuid":"xxx","isFirst":1})
re = requests.post(url,data,headers = {'Content-Type': 'application/json'}).text
print(re)