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

Python发送带图片的POST请求返回400错误,求适配解决方案

解决发送带图片消息的400错误问题

核心排查与修改方案

  • 匹配请求格式:聊天场景发图片的请求基本都是multipart/form-data类型,不要手动设置Content-Type头,让requests在传入files参数时自动生成正确的头部及边界值,避免格式不匹配。
  • 对齐表单与文件字段:
    • 对照浏览器开发者工具里的请求表单,确保代码data参数包含所有必填字段(比如对话ID、消息类型标记等),字段名称、大小写必须和浏览器请求完全一致。
    • 文件字段的键名要和浏览器请求里的图片字段名(比如file、image)完全匹配,同时指定正确的文件名和MIME类型(如image/jpeg、image/png)。
  • 补全关键请求头:复制浏览器请求中的Cookie、User-Agent、X-Requested-With等头信息,全部加入代码的headers参数,多数网站会校验这些头判断请求合法性。
  • 校验参数编码:如果表单含中文或特殊字符,确保编码为UTF-8,requests默认会处理,但手动构造数据时要避免编码错误。

示例修改后的代码逻辑

# 基于requests封装的make_request函数(保留原有封装逻辑)
def make_request(method, url, **kwargs):
    return requests.request(method, url, **kwargs)

# 调用示例
headers = {
    "Cookie": "你的浏览器Cookie内容",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...",
    # 补充其他从开发者工具复制的必要请求头
}

# 完全对齐浏览器的表单字段
data = {
    "conversation_id": "123456",
    "msg_type": "image",
    # 其他必填表单参数
}

# 文件参数配置,键名匹配浏览器字段
files = {
    "image": ("demo.jpg", open("demo.jpg", "rb"), "image/jpeg")
}

# 发起请求
response = make_request("POST", "目标接口URL", headers=headers, data=data, files=files)

提示:如果仍报错,打印response.text查看具体错误信息,多数网站会返回参数缺失、格式错误等明确提示,便于快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 03:27:45