Как в Python requests.post сделать тоже самое, как это делает curl?

Рейтинг: 0Ответов: 1Опубликовано: 09.02.2023

Имеется curl образец.

curl --request POST \
--url 'https://api.platforma.md/pbx/accounts/<accountId>/initSession' \
--header 'x-api-key: test_api_key' \
--header 'Content-Type: application/json' \
--data {...}

Как в python requests.post сделать тоже самое?

Пробовал так: объявлял строкой url и словарем оба header:

response = requests.post(url, headers={'x-api-key: test_api_key', 'Content-Type: application/json'}

На это собственно дается мне ответ:

{"message":"Missing Authentication Token"}

Что не верно? Дело двух заголовках? в json? В чем-то еще? (api-key верный, перепроверял)

Ответы

▲ 1

Первый способ - json передаем как строку в data=, вручную заполняем Content-Type:

data = '{...}'

headers = {
    'x-api-key': 'test_api_key',
    'Content-Type': 'application/json',
}
response = requests.post(url, headers=headers, data=data}

Второй способ - data описываем как словарь python, передаем его в json= (Content-Type будет автоматически заполнен нужным типом):

data = {
    ...
}

headers = {
    'x-api-key': 'test_api_key',
}
response = requests.post(url, headers=headers, json=data}