如何在Python POST请求中传递列表参数?遇400错误求解决
解决POST请求传递列表数据返回400错误的问题
针对你遇到的BAD_PARAMETER错误,以下是具体的排查和修复方案:
1. 修复请求体序列化与请求头问题
你手动使用json.dumps生成请求体,但如果请求头header中未指定Content-Type: application/json,服务器可能无法正确解析JSON格式的参数,导致无法识别Ids列表。
更简便可靠的方式是直接使用requests库的json参数,它会自动完成数据序列化并设置正确的Content-Type请求头:
import requests from config import api_url data = [1234, 4214] payload = { "Ids": data, "serviceProfile": "915" } # 使用json参数替代手动dumps+data参数 response = requests.post(api_url["url"], json=payload, headers=header, cert=(clientCrt, clientKey)) # 注意变量名统一:请求返回的是response,打印时不要用resp print(response.text) print(response.status_code)
2. 手动设置请求头的注意事项
如果必须手动构造JSON请求体,务必在header中添加Content-Type字段:
header = { # 保留你原本的其他头信息 "Content-Type": "application/json" }
3. 验证API参数要求
- 确认
Ids的参数名是否完全匹配API文档(比如是否要求小写ids、或者其他命名如IDList) - 确认API是否接受数字类型的ID列表,若要求字符串类型,可尝试转换为
["1234", "4214"]再测试
4. 修正代码变量名错误
你的代码中请求返回对象是response,但打印时误用了resp,这会导致运行时报错,记得统一变量名。
内容的提问来源于stack exchange,提问作者Shaurya Rajput
相关产品推荐
相关产品推荐

