需要读公司的一个接口,显示负载是“表单数据”
一开始没注意类型,按照公司其他接口的情况用了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,正常调用
完成