Python Requests传递键值对列表:REST POST请求模拟失败问题
解决POST请求参数格式问题
你当前代码无法正常工作的核心原因是:你用json.dumps()将参数转换为JSON字符串传递给data,这会让请求体以JSON格式发送,但服务器期望接收的是application/x-www-form-urlencoded类型的表单数据——也就是你给出的URL里那种var[0][a]=1&var[0][b]=23的键值对结构。
正确的实现代码
直接将字典参数传给data即可,requests会自动帮你把嵌套的数组/字典结构编码成目标格式:
import requests params = {"var": [{'a': 1, 'b': 23}]} resp = requests.post("https://example.com/rest/server.php", data=params)
原理说明
当你把Python字典传递给requests.post()的data参数时,requests会自动处理嵌套结构,生成与目标URL参数一致的表单编码内容,对应的请求体就会是:
var[0][a]=1&var[0][b]=23
同时requests会自动设置正确的请求头Content-Type: application/x-www-form-urlencoded,匹配服务器的参数解析要求。
内容的提问来源于stack exchange,提问作者Emmet B
相关产品推荐
相关产品推荐

