我用接口上传附件 提示上传的参数无法解析
data = {"companyId":241,"fileName":"1635386003(1).jpg",
"attachmentName":open(r"C:\Users\Administrator\Desktop\临时图片\1635386003(1).jpg",'rb'),
"attachmentType":24,"fileType":"jpg","objectId":4681,"objectType":18,"objectName":""}
res = requests.post(url=url,headers=headers,files=data,)
{"body":null,"msg":"输入参数无法解析","state":302}
问题
两处错误
1、post传参的data需要转换为JSON,
2、post传file和data需要分开传,demo和具体修改代码如下所示。
解决办法
1、请转化Python dict对象为JSON
需要使用
json.dumps(data)
2、另外
post传参的时候,传文件和数据体需要两个参数,不能混在一起使用
传文件 Demo
url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)
传数据body体 Demo
import json
url = 'https://api.github.com/some/endpoint'
payload = {'some': 'data'}
r = requests.post(url, data=json.dumps(payload))
传文件和数据
# files + json参数提交方式
import json
url = 'http://httpbin.org/post'
files = {'file': ('report.csv', 'some,data,to,send\nanother,row,to,send\n')}
payload = {'some': 'data'}
r = requests.post(url, files=files, data=json.dumps(payload))
具体修改如下
import json
# 或者
# import simplejson as json
files = {'file': ('C:\Users\Administrator\Desktop\临时图片\1635386003(1).jpg', 'some,data,to,send\nanother,row,to,send\n')}
data = {"companyId": 241, "fileName": "1635386003(1).jpg",
"attachmentName": "C:\Users\Administrator\Desktop\临时图片\1635386003(1).jpg", "attachmentType": 24,
"fileType": "jpg", "objectId": 4681, "objectType": 18, "objectName": ""}
res = requests.post(url=url, headers=headers, files=files, data=json.dumps(data))
将页面请求参数和你代码调用的请求参数比对一下 查调用日志或者设置代理看请求记录 看问题出在哪里
一般headers 的传入类型会影响解析结果,注意'Content-type'文件头的设置,或许能找到原因!
改成这个
res = requests.post(url=url,headers=headers,data=data)
或者这个试试
res = requests.post(url=url,headers=headers,json=data)