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}