如上,一个冗长的标题,其实就只是后台写个标题、备注加一个文件的上传功能。
不是很想写目录标题
首先,你要抓接口
(如果已经有接口可以直接点目录进代码编写阶段)
你可能是要灌数据,可能是要做接口自动化,可能是要做接口压力测试,这些都绕不过fiddler或者charles,本文以fiddler为例。
ps:并不影响代码怎么写
通过抓包你会发现,from-data和一般的传参不太一样,fiddler里长这样:

处处透露着它是一个from-data表单,所以这个时候你的python请求就不太一样了。
重点,python怎么写
首先,安装三方库requests_toolbelt
pip install pip install -i http://pypi.douban.com/simple/ requests_toolbelt
贴代码
import requests
from requests_toolbelt import MultipartEncoder
url = "这里写你抓到的url"
fields = {
'title': '标题1',
'description': '备注',
'expr_time': '2021-10-25 16:26',
'excel_file': ('兑换码表格.xlsx', open(r'C:/User/Desktop/兑换码表格.xlsx', 'rb'))
}
payload = MultipartEncoder(fields)
headers = {
# header里,可写其他必要的参数
'Content-type': payload.content_type # 这条语句必写
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
表单提交代码解析
这两行,不解释,必须有
import requests
from requests_toolbelt import MultipartEncoder
不解释,写你抓到的url
url = "这里写你抓到的url"
重点来了,title、description、expr_time、excel_file就是参数名,后边写值
fields = {
'title': '标题1',
'description': '备注',
'expr_time': '2021-10-25 16:26',
'excel_file': ('兑换码表格.xlsx', open(r'C:/User/Desktop/兑换码表格.xlsx', 'rb'))
}
我也不太清楚原理是什么,把fields转换成MultipartEncoder?或者叫实例化?
总之这一行代码不能少,不然走不了表单的格式
payload = MultipartEncoder(fields)
header正常写参数名和值,content-type必须这样写,才能传表单
headers = {
# header里,可写其他必要的参数
'Content-type': payload.content_type # 这条语句必写
传文件代码解析
可以看到文件的代码如下:
'excel_file': ('兑换码表格.xlsx', open(r'C:/User/Desktop/兑换码表格.xlsx', 'rb'))
‘excel_file’ 参数名,不解释
‘兑换码表格.xlsx’ 文件名,尽量和本地的保持一致
open(…)不解释,打开文件就是这个写法
本文介绍如何使用Python的requests和requests_toolbelt库进行from-data表单提交,包括文件上传。首先,通过Fiddler等工具抓取接口,然后详细解析表单提交和文件上传的代码实现,重点讲解了MultipartEncoder在表单格式化中的作用。
&spm=1001.2101.3001.5002&articleId=120969132&d=1&t=3&u=42ea6208f3044c4b8e9439e77d2e2cbf)
426





