繁体   English   中英

将 curl 转换为 python 请求

[英]Translating a curl to python requests

我正在尝试创建一个 python 脚本来与一个名为 Xibo 的系统的 API 交互。 我的问题是我不太了解 python 并且该系统的文档可以被慷慨地描述为差。 他们的部分文档使用请求的格式,但他们的官方 API 手册建议使用以下 curl 命令来更新系统上的媒体文件。 我知道请求是与 curl 之上的 API 交互的最佳格式,所以很明显,如果一般的想法是它更好,我宁愿在请求中这样做。

curl -X POST "http://129.12.19.62/api/library" -H  "accept: application/json" -H  "Content-Type: multipart/form-data" -F "files=@47.htz" -F "name=47" -F "oldMediaId=47" -F "updateInLayouts=1" -F "deleteOldRevisions=1"

那就是命令。 任何人都可以通过帮助我将其翻译成请求的格式来帮助我吗? 我曾尝试使用curl.trillworks ,但由于某种原因,它说"Error parsing curl command." . 我理解如果这是不可能的,或者如果您需要更多信息,我会尽我所能提供任何人需要帮助我的东西。

谢谢你。

尝试这样的事情:

import requests

entry_point = 'http://129.12.19.62/api/library'

headers = {
    'Accept': 'application/json',
    'Content-Type': 'multipart/form-data'
}

data = {
    'files': '@47.htz',
    'name': '47',
    'oldMediaId': '47',
    'updateInLayouts': '1',
    'deleteOldRevisions': '1'
}

r = requests.post(entry_point, headers=headers, data=data)

如果您再次尝试将 curl 命令粘贴到curlconverter.com中,它现在会生成正确的请求代码:

import requests

headers = {
    'accept': 'application/json',
    # requests won't add a boundary if this header is set when you pass files=
    # 'Content-Type': 'multipart/form-data',
}

files = {
    'files': open('47.htz', 'rb'),
    'name': (None, '47'),
    'oldMediaId': (None, '47'),
    'updateInLayouts': (None, '1'),
    'deleteOldRevisions': (None, '1'),
}

response = requests.post('http://129.12.19.62/api/library', headers=headers, files=files)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM