У вас есть две проблемы:
- Вы не отправляете JSON данные, вы забыли закодировать свои данные в JSON. Кодирование строкового значения
test connection
в JSON становится "test connection"
, но кавычки тоже имеют значение в вашей оболочке , поэтому вам нужно добавить extra цитирование или экранирование. - Вы не можете установить несколько заголовков для одной записи
-H
. Используйте несколько, по одному на каждый набор заголовков. Заголовки не нуждаются в кавычках, только оболочка нуждается в кавычках для предотвращения разделения аргументов на пробелы.
Это будет эквивалентно:
curl -X POST \
--data '"test connection"' \
-H 'Content-type: application/json' \
-H 'Authorization: Basic asdfasdf' \
dns.com/end
Демонстрация с использованием https://httpbin.org :
$ curl -X POST \
> --data '"test connection"' \
> -H 'Content-type: application/json' \
> -H 'Authorization: Basic asdfasdf' \
> https://httpbin.org/post
{
"args": {},
"data": "\"test connection\"",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Authorization": "Basic asdfasdf",
"Content-Length": "17",
"Content-Type": "application/json",
"Host": "httpbin.org",
"User-Agent": "curl/7.54.0",
"X-Amzn-Trace-Id": "Root=1-5e5c399c-201cc8007165873084d4cf38"
},
"json": "test connection",
"origin": "<ip address>",
"url": "https://httpbin.org/post"
}
, что соответствует Python эквиваленту:
>>> import requests
>>> url = 'https://httpbin.org/post'
>>> msg = "test connection"
>>> headers = {"Content-type": "application/json",
... "Authorization": "Basic asdfasdf"}
>>> response = requests.post(url, json=msg, headers=headers)
>>> print(response.text)
{
"args": {},
"data": "\"test connection\"",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Authorization": "Basic asdfasdf",
"Content-Length": "17",
"Content-Type": "application/json",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.22.0",
"X-Amzn-Trace-Id": "Root=1-5e5c3a25-50c9db19a78512606a42b6ec"
},
"json": "test connection",
"origin": "<ip address>",
"url": "https://httpbin.org/post"
}