将curl转换为python请求

问题描述 投票:1回答:1

向api端点发出multipart / form-data请求: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 "[email protected]' -F "fileUri=..." ...

所以我不相信它的端点不接受正确的请求。

这个curl语句和这个python调用看起来是否相同?一直坚持这个问题,我尝试了以下资源:

https://github.com/spulec/uncurl

https://curl.trillworks.com/

试图获得一个curl到python等价的验证。

不幸的是,uncurl根本无法解析我的curl语句,尽管它正常工作并且curl.trillworks给了我一个格式错误的'文件'字典而没有'数据':

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

哪个不对。 (因为我被卡住了,我还是尝试过了)

python python-requests
1个回答
2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.