无法将cURL转换为python请求



我正在努力将下面的命令转换为python请求脚本。目的是根据其注册情况查询此API的车辆MOT历史记录(英国(,如下所示为ZZ99ABC。我有一个API密钥,并通过cURL确认我的访问正在工作。

curl -H "Accept: application/json+v6" -H "x-api-key: <my_api_key>" https://beta.check-mot.service.gov.uk/trade/vehicles/mot-tests?registration=ZZ99ABC

到目前为止,我的尝试是生成一个403响应,缺少一个身份验证令牌。

import requests
import json
reg = "ZZ99ABC"
url = f"https://beta.check-mot.service.gov.uk/trade/vehicles/mot-tests"
payload = {'registration': reg}
headers = {'x-api-key': '<my_api_key>',
'Accept': 'application/json+v6'}
r = requests.post(url, data=json.dumps(payload), headers=headers)

你知道我可能在哪里搞错了吗?

提前感谢

requests.__version__ == '2.26.0'python --version == 3.9.2

对于任何像我这样的新手请求。遵循@Florian C.的建议并使用PreparedRequest类解决了我的问题。

import requests
from requests.models import PreparedRequest
url = r"https://beta.check-mot.service.gov.uk/trade/vehicles/mot-tests"
params= {'registration': '<your_reg>'}
req = PreparedRequest()
req.prepare_url(url, params)
headers = {'x-api-key': '<your_api_key>',
'Accept': 'application/json+v6'}
r = requests.get(req.url, headers=headers)

这个假设有效:

import requests
headers = {
'Accept': 'application/json+v6',
'x-api-key': '<my_api_key>',
}
params = (
('registration', 'ZZ99ABC'),
)
response = requests.get('/https://beta.check-mot.service.gov.uk/trade/vehicles/mot-tests/', headers=headers, params=params)

最新更新