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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:45:34