Python发送HTTP PUT请求时字符串数组引发400错误求助
问题分析与解决方案
你的核心问题出在请求数据的传递方式错误——你把序列化后的JSON数据塞进了请求头(headers)里的data字段,而不是作为请求体发送。这就导致后端无法正确解析你的字符串数组请求,进而返回400错误。
错误代码的问题点
看这段代码:
headers = {'Content-type': 'application/json', 'data': data}
HTTP请求头里根本不存在data这个标准字段,后端接收请求时,会因为请求体为空(你没真正传请求体),同时请求头里带了非法字段,再加上字符串数组的场景触发了后端的参数校验逻辑,直接返回400错误。而其他类型数据能“正常工作”大概率是后端对非字符串数组的请求做了容错处理,但这不是正确的请求方式。
修正后的代码
假设你用的是requests库,正确的写法有两种:
写法一:手动序列化后传请求体
import json import requests array = ["abc", "def"] myjson = {"array": array} data = json.dumps(myjson) headers = {'Content-type': 'application/json'} # 把data作为请求体的data参数传递 response = requests.put("你的API地址", data=data, headers=headers)
写法二:用json参数自动处理(更简洁)
import requests array = ["abc", "def"] myjson = {"array": array} # 直接传字典,requests会自动序列化并设置Content-Type为application/json response = requests.put("你的API地址", json=myjson)
额外说明
你之前尝试给数组元素加单/双引号完全没必要,json.dumps会自动帮你处理字符串的引号格式,问题根源从来不在数组元素的格式上,而是请求数据的传递位置错误。
内容的提问来源于stack exchange,提问作者user20401214
相关产品推荐
相关产品推荐

