requests处理 multipart/form-data 请求以及 boundary值问题
- 前言
- 1. 请求需要携带本地资源
- 2. 请求需要携带json
- 3. 总结
前言
关于 Content-type: multipart/form-data可以看一下这篇文章, 分析特别详细
HTTP协议之multipart/form-data请求分析
put和post区别不大, 只是上传资源的不同方式
requests页面常用操作(post、put、get、head、patch、delete方法)
1. 请求需要携带本地资源
import requests
from requests_toolbelt import MultipartEncoderheaders = {'Cookie': f'1QAZ2WSX3EDC={cookie}; __RequestVerificationToken={token}','Upgrade-Insecure-Requests': '1'}excel_file = open(file, 'rb')
multipart_encoder = MultipartEncoder(fields={'ConfirmationCategory': (None, '3'),'file': (file_name, excel_file, "application/vnd.ms-excel.sheet.macroEnabled.12"),'path': (None, f'C:\\fakepath\\f{file_name}'),'EngagementCode': (None, engagement_code),'isUseTool': (None, '0'),'Category': (None, '3'),'TemplateID': (None, '1'), },boundary='------WebKitFormBoundaryGBsSQdG8BdI5tzVZ')headers['Content-Type'] = multipart_encoder.content_typesession = requests.Session()
response = session.post(url=url, auth=AUTH, headers=headers)
2. 请求需要携带json
from requests_toolbelt.multipart.encoder import MultipartEncoder
import requestsheaders = {"Accept": "*/*","Accept-Encoding": "gzip, deflate, br","Accept-Language": "zh-CN,zh;q=0.9","Referer": "http://app.yjglj.sh.gov.cn/xzsp/DispatchAction.do?efFormEname=CXFW0102","Content-Type": "multipart/form-data; boundary=----WebKitFormBoundarygmHpU6AdOmQPE19B","Host": "app.yjglj.sh.gov.cn","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36"
}
form_data = MultipartEncoder(fields={"method": 'queryWhscxk',"params": '{"companyName": "", "registrationNumber": "沪WH安许证字[2021]0001"}'},boundary='----WebKitFormBoundarygmHpU6AdOmQPE19B'
)
headers.update({'Content-Type': form_data.content_type})
res = requests.post("http://app.yjglj.sh.gov.cn/xzsp/wxGzhServlet", data=form_data, headers=headers, timeout=10)
print(res.text)
3. 总结
关于 put 和 multipart/form-data 就这么多了, 还有一些其他代码也可以参考一下
Python requests库处理 multipart/form-data 请求以及 boundary值问题