将curl转换为python请求

时间:2018-10-31 01:19:46

标签: python python-requests

向api端点发出多部分/表单数据请求:https://api-reference.smartling.com/#tag/Files%2Fpaths%2F~1files-api~1v2~1projects~1%7BprojectId%7D~1file%2Fpost

我正在使用具有以下语法的python请求模块:

headers = {
    'Authorization': 'Bearer ...',
    'Content-Type': 'multipart/form-data'
}
files = {'file': open('myfile.xliff', 'rb')}
data = {
    'fileUri': '...',
    'fileType': 'xliff',
    ...
}
requests.request('POST', endpoint, headers=headers, files=files, data=data)

不幸的是,我收到来自端点的错误,这只是给我一个常见的http 500错误。

如果我通过curl手动完成此操作,就可以正常工作

curl -XPOST -H 'Authorization: Bearer ...' -F "file=@myfile.xliff' -F "fileUri=..." ...

因此,我不认为其端点未接受适当的请求。

这个curl语句和这个python调用是否等效?由于这个问题,我尝试了以下资源:

https://github.com/spulec/uncurl

https://curl.trillworks.com/

尝试获取与python等效的curl进行验证。

不幸的是,尽管url可以正常工作,但url仍然无法解析我的curl语句。curlworks给我提供了格式错误的“文件”字典,却没有“数据”:

files = {
    'file': ('myfile.xliff.;type', open('myfile.xliff;type', 'rb')),
    'fileUri': (None, 'myfile.xliff'),
    'fileType': (None, 'xliff'),
}

这是不正确的。 (因为卡住,我还是尝试了)

1 个答案:

答案 0 :(得分:2)

尝试从将自动创建的标题中删除Content-Type