Python使用multipart/form-data提交数组报错,求解决方案
解决方案
问题出在你传递的data字段内容不是标准的JSON数组格式,后端无法识别。以下是修正后的代码:
import requests import json post_url = "你的目标URL" # 构造符合要求的数组结构 post_data = [{"x": 0, "y": 0, "value": "x y orange"}] # 将数组序列化为标准JSON字符串,作为multipart字段传递 file_data = {"data": (None, json.dumps(post_data), "application/json")} # 无需手动设置Content-Type,requests会自动生成multipart/form-data头 response = requests.post(post_url, files=file_data) print(response.text)
错误原因说明
- 你之前的
post_data是元组列表,转成字符串后是类似"[('x', ('data', 0)), ...]"的非JSON格式内容,后端解析时无法识别为数组,因此报错"The data field must be an array"。 - 使用
data或json参数时,requests会自动设置Content-Type为application/x-www-form-urlencoded或application/json,不符合后端要求的multipart/form-data,因此触发对应错误。
关键要点
- 必须传递标准JSON格式的数组字符串给
data字段,使用json.dumps()序列化数组是正确方式。 - 通过
files参数传递数据时,requests会自动生成符合要求的multipart/form-data请求头,无需手动设置。 files中data字段的格式为(文件名, 内容, MIME类型),这里文件名设为None即可,因为我们不是上传实际文件,只是传递JSON数据。
内容的提问来源于stack exchange,提问作者Mehmood
相关产品推荐
相关产品推荐

