方法一:直接使用requests的data,files参数
直接上代码吧
def import_car_cargo(token,files,**kwargs):
"""
:param token:
:param files: 导入的文件
:param kwargs:格式为{'strJson':'****'},****为接口请求中strJson的值
:return:
"""
url='/task/importCarCargo'
method ='post'
headers =headers_join(token)
data={**kwargs}
res =api_request(url=url,method=method,headers=headers,data=data,files=files)
return res
if __name__ == '__main__':
token ='XXXX'
filepath = os.path.join(PORT_DATA_DIR, 'task/not_straight/非直发批量导入车货-铁路运输-散货.xlsx')
file_name='非直发批量导入车货-铁路运输-散货.xlsx'
application_type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
files ={'file':(file_name,open(filepath,'rb'),application_type)}
data={'strJson':{"originStartDate":"2022-03-15","actualStartDate":null}
print(import_car_cargo(token, files, **data))
方法二:使用MultipartEncoder
from requests_toolbelt.multipart.encoder import MultipartEncoder
def import_car_cargo(token, **data):
"""
方法2:使用MultipartEncoder
"""
url='/task/importCarCargo'
method ='post'
data ={**data}
m=MultipartEncoder(data)
headers = {
'Content-Type': m.content_type
}
res =api_request(url=url,method=method,headers=headers,data=m)
return res
if __name__ == '__main__':
"""
方法2:使用MultipartEncoder
"""
token ='XXXX'
filepath = os.path.join(PORT_DATA_DIR, 'task/not_straight/非直发批量导入车货-铁路运输-散货.xlsx')
file_name='非直发批量导入车货-铁路运输-散货.xlsx'
application_type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
data={
'file': (file_name, open(filepath, 'rb'), application_type),
'strJson':{"originStartDate":"2022-03-15","actualStartDate":null}
print(import_car_cargo(token, **data))