requests库实现文件上传及json数据同时提交接口

 

 

  通过截图,发现提交接口入参如图,既有上传文件也有json数据提交,并且content-type还有2个,一个是application/vnd.ms-excel,另一个是application/json,只通过requests库去实现这个接口是行不通的,我们需要借用这个方法MultipartEncoder,实现文件及json数据同时上传,代码如下:

 

from requests_toolbelt.multipart.encoder import MultipartEncoder
import requests

url = "https://xxxxx/fdn/api/federation/batch"
headers = {
    'wb-fdn-jwt': 'xxxx'
}
m = MultipartEncoder({
    'uploadFile': ('abc.csv', open(r"C:\Users\40219\Desktop\111.csv", 'rb'), 'application/vnd.ms-excel'),
'qo':('blob','{"orderId":"XXX","fileEncryption":1,"idDeviceType":3,"testParams":"phoneMd5","serviceType":1,"testType":1,"platform":"Console"}','application/json')

})
headers['Content-Type'] = m.content_type
response = requests.post(url,headers=headers,data=m)
print(response.text)

 

注意点:

1、MultipartEncoder传入的是字典格式

2、字典里面有2个键值对,键的值是抓包的name值,也就是传给后台的值。

    字典的值包括上传文件名及filename 的值及content-type格式

3、请求头headers必须是MultipartEncoder().content_type来表示

4、发送requests请求时,必须是data=MultipartEncoder()方法

 

验证:

发送请求后,结果成功

{'code': 0, 'msg': '成功', 'data': None, 'count': 0}

posted @ 2021-03-13 18:10  JakeTan  阅读(878)  评论(1)    收藏  举报