Невозможно преобразовать cURL в запросы python

#python #curl #python-requests

#python #curl #python-запросы

Вопрос:

Я изо всех сил пытаюсь преобразовать приведенную ниже команду в скрипт запросов python. Цель состоит в том, чтобы запросить у этого API историю их транспортных средств (Великобритания) на основе их регистрации, представленной ниже как 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

Комментарии:

1. Вам нужно использовать метод GET: requests.get

Ответ №1:

Для любых начинающих запросов пользователей, таких как я. Следуя совету @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)
 

Ответ №2:

это должно работать:

 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)