将 cURL 命令转换为 python 请求
Posted
技术标签:
【中文标题】将 cURL 命令转换为 python 请求【英文标题】:Converting a cURL command to a python request 【发布时间】:2018-10-21 00:47:00 【问题描述】:我是 cURL 的新手;我想转换这种结构的 curl 命令:
curl -X POST "http://127.0.0.1:8881/models/faewrfaw/v1/predict" -H "Content-Type:multipart/form-data" -F "data=\"key\": \"Path\";type=application/json" -F "Path=@C:\Users\rtam\Music\1 2 3\TEST123.jpg"
到 python 请求。我使用https://curl.trillworks.com/ 来帮助我并将其作为输出:
import requests
headers =
'Content-Type': 'multipart/form-data',
files =
'data': (None, '"key": "Path";type'),
'Path': ('C:\\Users\\rtam\\Music\\1 2 3\\TEST123.jpg', open('C:\\Users\\rtam\\Music\\1 2 3\\TEST123.jpg', 'rb')),
response = requests.post('http://127.0.0.1:8881/models/faewrfaw/v1/predict', headers=headers, files=files)
但是,在 python 中测试响应时,我收到了一个错误的请求/请求,服务器无法理解。我注意到 trillworks 网站在其格式中没有考虑类型(应用程序/json),是否需要在 python 脚本中?
【问题讨论】:
你能包括你得到的请求错误吗? 所以我尝试输入: print(response.text) print(response.status_code) 并收到此错误,并显示 400 Bad Request 状态代码:错误请求
浏览器(或代理)发送了此服务器无法理解的请求。
400 我建议比较两种情况下发送的实际请求,看看有什么不同。对于查看来自requests
和来自curl 的请求的内容,存在一些问题。
【参考方案1】:
此答案可能对您有所帮助:How to send JSON as part of multipart POST-request
在你的情况下是
files =
'Path': (
'C:\\Users\\rtam\\Music\\1 2 3\\TEST123.jpg',
open('C:\\Users\\rtam\\Music\\1 2 3\\TEST123.jpg', 'rb'),
'application/octet-stream'
)
'data': (None, '"key": "Path"', 'application/json'),
response = requests.post(
'http://127.0.0.1:8881/models/faewrfaw/v1/predict',
files=files
)
【讨论】:
感谢您的链接。我看到了您的更改——删除了标题并添加了八位字节流——但我仍然得到错误请求
浏览器(或代理)发送了此服务器无法理解的请求。
TEST123.jpg
作为 Path 元组中的第一个元素。以上是关于将 cURL 命令转换为 python 请求的主要内容,如果未能解决你的问题,请参考以下文章