如何用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
相关产品推荐
相关产品推荐

