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

Python requests复现curl的form-data请求返回400错误如何解决

问题原因

原代码构造的data表单项值和curl提交的内容不匹配:额外多转义了一层引号、JSON末尾多了冗余空格,后端无法正确解析参数,因此返回400错误。
目标curl命令中--form 'data="{\"searchId\":66966,\"mapAllTeam\":true}"'实际提交的data字段值为外层包裹双引号的标准JSON字符串,无多余字符。

正确实现代码
import requests

uri = "https://my_api.com/request/dynamic_views"
cookies = {"session": "123"}
# 构造multipart表单普通字段,元组第一个元素为None表示非文件上传字段
form_fields = {
    "data": (None, '{"searchId":66966,"mapAllTeam":true}')
}

resp = requests.post(uri, cookies=cookies, files=form_fields)
print(resp.status_code, resp.text)
关键修改点
  • multipart表单的非文件字段,通过(None, 字段值)的元组格式传入files参数即可,requests会自动按multipart/form-data格式编码,不需要额外做转义处理
  • 严格对齐curl提交的字段值,去掉多余的转义引号、JSON结构里的冗余空格,避免后端校验不通过
  • Cookie传参优先使用requests自带的cookies参数,不需要手动拼接Cookie请求头,减少格式错误概率
  • 只要传入files参数,requests会自动设置正确的Content-Type请求头,不需要手动指定

内容的提问来源于stack exchange,提问作者Jankes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:31:11