使用请求将CURL命令转换为Python

bnl4lu3b  于 2022-12-19  发布在  Python
关注(0)|答案(2)|浏览(201)

我想使用Python中的requests库来发出POST请求,但是我尝试使用的API使用curl来发出请求,我不知道如何转换它。
这是curl命令:

curl -X POST "https://api/recognize?secret_key=abc" -H  "accept: application/json" -H  "Content-Type: multipart/form-data" -F "image=@/path/to/image.jpg;type=image/jpeg"

目前,我只是使用一个网址,而不是图像本身作为一个变通办法。
代码:

params = (
    ('image_url', '2015-BMW-320djpg'),
    ('secret_key', 'abc'),
)

response = requests.post('https://api/recognize_url', params=params)
rdlzhqv9

rdlzhqv91#

据我所知,没有“cURL -〉Requests”转换器,但是转换一个请求(和类似的请求)以使用requests模块应该相当容易。

files = {'image': open('/path/to/image.jpg', 'rb')}
params = {'secret_key': 'abc'}
headers = {'accept': 'application/json'}

response = requests.post(url, files=files, params=params, headers=headers)
eagi6jfj

eagi6jfj2#

首先,将命令粘贴到curlconverter.com/python/中,它会将其转换为

import requests

headers = {
    'accept': 'application/json',
}

params = {
    'secret_key': 'abc',
}

files = {
    'image': open('/path/to/image.jpg;type=image/jpeg', 'rb'),
}

response = requests.post('https://api/recognize', params=params, headers=headers, files=files)

然后,'image': open('/path/to/image.jpg;type=image/jpeg', 'rb'),行是错误的,因为;type=image/jpeg不是映像的文件路径的一部分。要更正它,您需要阅读curl文档中的-F标志和Requests文档中的files=参数(或仅阅读Advanced Usage页面),以了解您需要将其更改为

files = {
    'image': ('image.jpg', open('/path/to/image.jpg', 'rb'), 'image/jpeg'),
}

相关问题