Python Requests调用接口遇application/octet-stream不支持错误,Postman可成功
解决Python requests调用API出现“application/octet-stream not supported”错误的方案
根据你提供的信息,问题出在请求参数的格式处理以及文件MIME类型的默认设置上,以下是具体修复步骤:
修正payload的序列化方式:你当前用
str(payload)转换的是Python字典的字符串表示(带单引号),并非标准JSON格式。API可能无法解析这种格式,导致请求被拒。改用json.dumps(payload)生成标准JSON字符串:import json # 生成标准JSON字符串 data = {"quotaionDtos": json.dumps(payload)}指定文件的正确MIME类型:当使用
files参数时,requests默认会给文件分配application/octet-stream类型,如果API不支持这个类型就会报错。你需要为每个文件显式指定对应的MIME类型(比如图片用image/jpeg,CSV文件用text/csv):# 示例:为文件指定MIME类型 files = { "file_field_name": ("your_filename.ext", open("path/to/your/file", "rb"), "正确的MIME类型") }核对请求参数与Postman完全一致:确认
data中的字段名、文件参数的键名和Postman里的form-data字段完全匹配,包括大小写和拼写。
调整后的完整调用代码示例:
import json import requests session = requests.Session() url = "你的API地址" payload = {"你的": "payload数据"} data = {"quotaionDtos": json.dumps(payload)} files = { "file_key": ("example.jpg", open("example.jpg", "rb"), "image/jpeg") } response = session.request('POST', url, data=data, files=files) # 查看响应内容排查问题 print(response.text)
内容的提问来源于stack exchange,提问作者CHIU TZE CHEUNG
相关产品推荐
相关产品推荐

