POST请求负载form-data表单数据需要同步修改header的Content-type

文章讲述了在使用Python的requests库调用接口时,由于误将表单数据(form-data)当作JSON处理,导致时间段要求未被正确反映。通过介绍如何使用MultipartEncoder转换字典为form-data并设置Content-Type头,解决了这个问题。
摘要由CSDN通过智能技术生成

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

post请求负载form-data表单数据
一开始没注意类型,按照公司其他接口的情况用了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值,二者缺一不可否则会报错
form-data类型的负载需要同步修改header的Contet-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,正常调用

完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值