需要读公司的一个接口,显示负载是“表单数据”

 一开始没注意类型,按照公司其他接口的情况用了json,结果返回的数据时间阶段没有体现dct的要求,脚本如下(错误示范)
from requests import post
from json import dumps
url = 'https://.../export'
dct = {
    'startFlowTime': '2023-08-01 00:00',  # 希望在返回结果中体现的时间段要求
    'startFlowEndTime': '2023-08-01 23:59',  # 希望在返回结果中体现的时间段要求
}
hdr = {
	...
}
res = post(url, headers=hdr, data=dumps(dct))  # dumps针对json格式传数,这里是form-data,不适用
 
问了研发小兄弟才知道图1所示的是form-data类型,在python.requests里面需要处理一下,还需要在负载form-data的同时在headers里附加一个content-type值,二者缺一不可否则会报错
 
完整脚本如下:
from requests import post
from requests_toolbelt import MultipartEncoder  # 字典转form-data包
url = 'https://.../export'
dct = {
    'startFlowTime': '2023-08-01 00:00',
    'startFlowEndTime': '2023-08-01 23:59',
}
fls = MultipartEncoder(dct)  # 负载字典转form-data
hdr = {
    'Content-Type': fls.content_type,  # 自动生成的content-type必须装进header里
}
res = post(url, headers=hdr, data=fls)  # 同时调整headers和data,正常调用
 
完成


















