用CURL通过Python调用API

2024-09-30 22:12:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个用于车牌识别的API;我得到了以下curl命令:

如何在PYTHON中用curl实现这样的调用?在

curl "https://api.havenondemand.com/1/api/async/recognizelicenseplates/v1?url=https%3A%2F%2Fwww.havenondemand.com%2Fsample-content%2Fvideos%2Fgb-plates.mp4&source_location=GB&apikey=695e513c-xxxx-xxxx-xxxx-xxxxxxxxxx"

curl -X POST --form "url=https://www.havenondemand.com/sample-content/videos/gb-plates.mp4" --form "source_location=GB" --form "apikey=695e513c-xxxx-xxxx-a666-xxxxxxxxxx" https://api.havenondemand.com/1/api/async/recognizelicenseplates/v1

Tags: httpsformcomapiurlsourceasynclocation
3条回答

调用Haven OnDemand api的最快方法是使用HPE官方库。可以安装HOD Python lib并按如下方式使用:

安装lib

pip安装无需

# put these in your file
from havenondemand.hodclient import *
from havenondemand.hodresponseparser import *

client = HODClient("API_KEY", version="v1")
parser = HODResponseParser()

# callback function
def asyncRequestCompleted(response):
    jobID = parser.parse_jobid(response)
    if jobID is None:
        errorObj = hodParser.get_last_error()
        for err in errorObj.errors:
            print ("Error code: %d \nReason: %s \nDetails: %s\n" % (err.error,err.reason, err.detail))
    else:
        client.get_job_status(jobID, requestCompleted)

def requestCompleted(response):
    payloadObj = parser.parse_payload(response)
    resp = ""
    if payloadObj is None:
        errorObj = parser.get_last_error()
        for err in errorObj.errors:
            if err.error == ErrorCode.QUEUED:
                time.sleep(2)
                client.get_job_status(err.jobID, requestCompleted)
                return
            elif err.error == ErrorCode.IN_PROGRESS:
                time.sleep(10)
                client.get_job_status(err.jobID, requestCompleted)
                return
            else:
                resp += "Error code: %d \nReason: %s \nDetails: %s\n" % (err.error,err.reason)
    else:
        print(payloadObj)

params = {}
params['url'] = 'https://www.havenondemand.com/sample-content/videos/gb-plates.mp4'
params['source_location'] = 'GB'
hodApp = HODApps.RECOGNIZE_LICENSE_PLATE
client.post_request(params, hodApp, True, callback=asyncRequestCompleted)

在Python中,使用requests模块是一个更好的选择。先安装:

pip install requests

然后这样做:

^{pr2}$

基本上,任何表单字段都应该作为键值对进入data字典。我们在这里使用requests.post()函数。该函数将目标URL作为第一个参数。和表单值作为第二个参数。在

我们得到了一个响应对象。您可以通过打印出response.content的值来查看原始响应。但是,如果知道响应是JSON,那么可以使用json()方法来解析响应并获取Python数据类型(dictionary)。在

有多种选择。可以从urllib2(或任何其他类似HTTP库的请求)开始。更好的选择是直接使用havenondemand的python客户机库

相关问题 更多 >