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
相关产品推荐
相关产品推荐

