You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Requests发送JSON格式POST数据?请求报错求助

问题解决

1. 核心错误:请求体格式不符合API要求

目标API要求APIRequests是数组(列表)类型,但你编写的代码里把它设成了字典,这直接触发了The API requests are invalid的错误。

正确的请求体结构应为:

{"APIRequests":[{"ApplicationId":"com.xsd.v1.1","Name":"JACK","SurName":"DANIEL","Verb":"Authenticate"}]}

修改代码中的datapost部分,用方括号[]包裹APIRequests的字典值,将其转为列表:

oturum = requests.Session()
headers = {
    'Host': 'www.xsd.com',
    'Content-type': 'application/json',
    'User-Agent': 'okhttp/3.12.1'}

# 修正APIRequests为列表格式
datapost= {'APIRequests': [{'ApplicationId': "com.xsd.v1.1", 'Name': "JACK", 'SurName':"DANIEL",'Verb':'Authenticate'}]}

req = oturum.post("https://www.xsd.com/api/", headers=headers, json=datapost)

print(req.json())

2. 关于请求体打印带"b"的问题

打印出的b'{"APIRequests": ...}'是正常现象,b是Python中bytes类型对象的标识。requests库的json参数会自动将Python字典序列化为JSON字符串,再编码成bytes格式发送给服务器,打印时就会显示这个标识。实际发送给服务器的是正确的JSON字符串,这个b不会影响请求,无需处理。


内容的提问来源于stack exchange,提问作者bymechul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 23:35:19