python发送post请求上传文件,无法解析上传的文件
Posted 91parson
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python发送post请求上传文件,无法解析上传的文件相关的知识,希望对你有一定的参考价值。
前言
近日,在做接口测试时遇到一个奇葩的问题。
使用post请求直接通过接口上传文件,无法识别文件。
遇到的问题
以下是抓包得到的信息:
以上请求是通过Postman直接发送请求的。
在这里可以看到消息头里包含:Access-Token和Content-Type
因此在在使用python直接调用此接口时,传入的Headers也是包含这两个值的:
def send_app_logo(token, appid): url = "XXXXXXXXX" headers = { "Access-Token": token, "Content-Type": "application/x-www-form-urlencoded", } data = {"logo": (\'logo1024x1024.png\',open(\'/XXXXXX/XXXX/1024x1024.png\',\'rb\'),\'image/png\')} res = requests.post(url=url,headers=headers,files=data) print(url) print(res.text) result_json = json.loads(res.text) code = result_json["code"] message = result_json["message"] return code, message
此时,从抓包工具中看到发送的请求结果是失败的,无法解析文件:
解决办法
后面直接把headers里面的Content-Type去掉,完美解决此问题:
def send_app_logo(token, appid): headers = { "Access-Token": token, } url = "XXXXXXXXXXXX" data = {"logo": (\'logo1024x1024.png\',open(\'/XXXXXX/XXXXX/1024x1024.png\',\'rb\'),\'image/png\')} res = requests.post(url=url,headers=headers,files=data) print(url) print(res.text) result_json = json.loads(res.text) code = result_json["code"] message = result_json["message"] return code, message
以上是关于python发送post请求上传文件,无法解析上传的文件的主要内容,如果未能解决你的问题,请参考以下文章
python+requests接口自动化4. 接口实现文件(图片)上传