Как реализовать `-d’value = {«test»: «test»}» curl в python?

#python #curl

#python #curl

Вопрос:

Следующая команда может отправить значение в один из моих внутренних веб-сервисов.

 curl -k -X POST -d 'value={"test":"test"}' "https://myinternalsite/....." -u 'username:password'
  

И мне нужен скрипт python для реализации, поэтому у меня есть следующий скрипт:

 import requests
from requests.auth import HTTPBasicAuth


url='https://myInternalWebsite/....'
json={'test':'test'}
username='....'
password = '....'
auth = HTTPBasicAuth(username, password)
resp = requests.post(url, json=json, auth=auth, verify=False)
resp.content
  

Скрипт завершен без каких-либо ошибок (200). Но json значение не публикуется. Не уверен, что внутренний сайт не может обработать этот json= параметр? Как реализовать -d 'value={"test":"test"}' curl в python?

Ответ №1:

Когда вы используете json аргумент, он не передает его в качестве значения value параметра, он отправляет JSON в качестве необработанного тела сообщения.

Если это должно быть значение параметра POST, используйте data аргумент и вызывайте json.dumps() явно.

 resp = requests.post(url, data = {"value": json.dumps(json)}, auth=auth, verify=False)