requests处理 multipart/form-data 请求以及 boundary值问题

requests处理 multipart/form-data 请求以及 boundary值问题

  • 前言
    • [1. 请求需要携带本地资源](#1. 请求需要携带本地资源)
    • [2. 请求需要携带json](#2. 请求需要携带json)
    • [3. 总结](#3. 总结)

前言

关于 Content-type: multipart/form-data可以看一下这篇文章, 分析特别详细
HTTP协议之multipart/form-data请求分析

put和post区别不大, 只是上传资源的不同方式
requests页面常用操作(post、put、get、head、patch、delete方法)

1. 请求需要携带本地资源

python 复制代码
import requests
from requests_toolbelt import MultipartEncoder

headers = {'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_type


session = requests.Session()
response = session.post(url=url, auth=AUTH, headers=headers)

2. 请求需要携带json

python 复制代码
from requests_toolbelt.multipart.encoder import MultipartEncoder
import requests

headers = {
    "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值问题

相关推荐
亿牛云爬虫专家33 分钟前
Kubernetes下的分布式采集系统设计与实战:趋势监测失效引发的架构进化
分布式·python·架构·kubernetes·爬虫代理·监测·采集
蹦蹦跳跳真可爱5895 小时前
Python----OpenCV(图像増强——高通滤波(索贝尔算子、沙尔算子、拉普拉斯算子),图像浮雕与特效处理)
人工智能·python·opencv·计算机视觉
nananaij5 小时前
【Python进阶篇 面向对象程序设计(3) 继承】
开发语言·python·神经网络·pycharm
雷羿 LexChien5 小时前
从 Prompt 管理到人格稳定:探索 Cursor AI 编辑器如何赋能 Prompt 工程与人格风格设计(上)
人工智能·python·llm·编辑器·prompt
敲键盘的小夜猫6 小时前
LLM复杂记忆存储-多会话隔离案例实战
人工智能·python·langchain
高压锅_12206 小时前
Django Channels WebSocket实时通信实战:从聊天功能到消息推送
python·websocket·django
胖达不服输7 小时前
「日拱一码」020 机器学习——数据处理
人工智能·python·机器学习·数据处理
吴佳浩7 小时前
Python入门指南-番外-LLM-Fingerprint(大语言模型指纹):从技术视角看AI开源生态的边界与挑战
python·llm·mcp
吴佳浩8 小时前
Python入门指南-AI模型相似性检测方法:技术原理与实现
人工智能·python·llm
叶 落8 小时前
计算阶梯电费
python·python 基础·python 入门