在Python中使用文件上传作为请求重写curl post调用



我有这个curl调用到一个本地graphhopper服务器:

curl -XPOST -H "Content-Type: application/gpx+xml" -d @home/jd/test1.gpx "localhost:8989/match?vehicle=car&type=json"

我现在想在python中自动调用这个调用,目前为止得到了以下结果:

import requests
url = 'http://localhost:8989/match'
headers = {'Content-Type': "application/gpx+xml"}
files = {'upload_file': open('home/jd/test1.gpx','rb')}
values = {'vehicle': 'car', 'type': 'json'}
r = requests.post(url, files=files, data=values, headers=headers)
print (r.status_code)
print (r.raise_for_status())

我得到一个错误的请求URL http://localhost:8989/match

我在这里错过了什么?

我找到了解决方案:

由于Curl的Post请求上传了一个文件,我必须将文件对象直接传递给data。我确实把其他参数放回了URL。

import requests
url = 'http://localhost:8989/match?vehicle=car&type=json'
headers = {'Content-Type': 'application/gpx+xml'}
r = requests.post(url, data=open('/home/jd/test1.gpx','rb'), headers= headers)
print (r.status_code)
print (r.raise_for_status())
print (r.text)

很有魅力!

相关内容

  • 没有找到相关文章

最新更新