Curl 将文件作为 POST 正文本身上传,但您要问requests
将其编码为多部分/表单数据主体。不要使用files
在这里,传入文件对象作为data
争论:
import requests
file = open('test.gpx', 'rb')
payload = {'app_id': 'my_id', 'app_key': 'my_key'}
headers = {'Content-Type':'application/gpx+xml', 'Accept':'application/json'}
r = requests.post(
"https://test.roadmatching.com/rest/mapmatch/",
data=file, headers=headers, params=payload)
如果您在with
声明上传后它将为您关闭:
payload = {'app_id': 'my_id', 'app_key': 'my_key'}
headers = {'Content-Type':'application/gpx+xml', 'Accept':'application/json'}
with open('test.gpx', 'rb') as file:
r = requests.post(
"https://test.roadmatching.com/rest/mapmatch/",
data=file, headers=headers, params=payload)
来自curl的文档--data-binary http://curl.haxx.se/docs/manpage.html#--data-binary:
(HTTP) 这完全按照指定发布数据,无需任何额外处理。
如果数据以字母开头@
,其余的应该是文件名。数据发布方式类似于--data-ascii
确实如此,除了保留换行符和回车符并且从不进行转换。