使用RESTAPI发布文件:从curl示例到Python代码

使用RESTAPI发布文件:从curl示例到Python代码,python,rest,http,post,Python,Rest,Http,Post,我试图用Python编写通过RESTAPI将文件上传到web服务的代码。该服务的文档显示了使用curl作为客户端的示例: curl -X POST -H \ -H "Content-Type: multipart/form-data" \ -F "file=filename.ext" \ -F "property1=value1" \ -F "property2=value2" \ -F "property3=value3" \ https://domain/api/endpoint 对我来说

我试图用Python编写通过RESTAPI将文件上传到web服务的代码。该服务的文档显示了使用curl作为客户端的示例:

curl -X POST -H \
-H "Content-Type: multipart/form-data" \
-F "file=filename.ext" \
-F "property1=value1" \
-F "property2=value2" \
-F "property3=value3" \
https://domain/api/endpoint
对我来说,困难在于该语法与我找到的多部分表单数据示例(包括
请求
文档)不匹配。我尝试了这个,但不起作用(被API拒绝):

错误为:“org.apache.commons.fileupload.FileUploadException:请求被拒绝,因为找不到多部分边界”

有人能帮忙把这个curl示例转换成正确的Python代码吗

谢谢


R.

好的,看起来web服务文档是错误的,只需将元数据作为参数发送即可。此外,我在另一个请求中发现,您不应该设置头。所以我从一个错误的例子开始

import requests

file_data = [
    ("file", "filename.ext"),
    ("property1", "value1"),
    ("property2", "value2"),
    ("property3", "value3"),
]

response = requests.post("https://domain/api/endpoint",
    headers={"Content-Type": "multipart/form-data"}, files=file_data)