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发送http请求时遇到问题总结
1.报错信息为“ERROR 'str' object has no attribute 'endwith'”,排查发现endswith方法名写错了,少了s,写成了 'endwith' if inter ...
- python发送网络请求
1.使用urllib模块(使用不方便,建议使用第二种) get请求: res = urlopen(url) from urllib.request import urlopen url = 'http ...
- python发送requests请求时,使用登录的token值,作为下一个接口的请求头信息
背景介绍: 发送搜索请求时,需要用到登录接口返回值中的token值 代码实现: 登录代码: 搜索接口:
- go 发送post请求(键值对、上传文件、上传zip)
一.post请求的Content-Type为键值对 1.PostForm方式 package main import ( "net/http" "net/url" ...
- requests模块--python发送http请求
requests模块 在Python内置模块(urllib.urllib2.httplib)的基础上进行了高度的封装,从而使得Pythoner更好的进行http请求,使用Requests可以轻而易举的 ...
- 发送ajax请求实现上传图片显示在网页上
<?php // 1,通过超全局变量来获取files[上传的图片名称] $file = $_FILES["files"] // 2,在通过strrchr来获取图片的格式 $e ...
- python发送post请求
urllib2.urlopen() urlib2是使用各种协议完成打开url的一个扩展包.最简单的使用方式是调用urlopen方法,比如 def urlopen(url, data=None, tim ...
- python 发送POST请求
#博客地址:https://blog.csdn.net/qq_36374896 import urllib.request import urllib.parse url = "http:/ ...
- 转载:python发送HTTP请求
1. [代码]GET 方法 import httplib #----------------------------- conn = httplib.HTTPConnection("www. ...
随机推荐
- TCP/IP(域名DNS)
域名是不带http://的. 有DNS就能解析域名,只要联网,不用担心你的域名和IP无法映射起来. 当然,域名和IP的映射也可以通过本地hosts文件(优先于DNS)添加.C:\Windows\Sys ...
- P2420 让我们异或吧 (树链剖分,异或前缀和)
题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中-xor运算也很常见.比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B是否是男生)=A和B是否能 ...
- Element 'plugin' cannot have character [children], because the type's content type is element-only
原因是你复制的时候,带了一些特殊符号. 解决方案: 将那一串代码复制到notpad++ 或者文本上面,再复制到你的编译器里面,就可以解决问题了
- LA 3905 Meteor 扫描线
The famous Korean internet company nhn has provided an internet-based photo service which allows The ...
- foj Problem 2275 Game
Problem D Game Accept: 145 Submit: 844Time Limit: 1000 mSec Memory Limit : 262144 KB Problem D ...
- 转 Kafka入门经典教程
Kafka入门经典教程 http://www.aboutyun.com/thread-12882-1-1.html 问题导读 1.Kafka独特设计在什么地方?2.Kafka如何搭建及创建topic. ...
- 慕课 python 操作数据库
test_connection import MySQLdb conn = MySQLdb.Connect( host = '127.0.0.1', port = 3306, user = '**** ...
- Linux内核解析:进程间通信:管道
管道的定义管道的用途管道的操作管道非法read与write内核实现解析管道通信原理及其亲戚通信解析父子进程通信解析亲缘关系的进程管道通信解析管道的注意事项及其性质管道有以下三条性质shell管道的实现 ...
- LeetCode OJ——Word Break
http://oj.leetcode.com/problems/word-break/ 动态规划题目,重点是建立出模型来: fun(start,end) = fun(start,i)*fun(i+1, ...
- react css module
<div className={style['content-warp']}></div> <div className={style.search}></d ...