Словарь форматирования заголовка для запросов в Python - PullRequest
0 голосов
/ 11 мая 2018

У меня есть следующий формат для заголовков запросов:

{
  "projectName": New001,
  "cloudRegions":{"REGION1":"centralus"},
  "cloudAccountName":"XXX-XXXX-XXXX"
}

Как мне отформатировать это, чтобы принять {"REGION1": "centralus"}?

Мой код Python:

url = 'www.myexample.com'

headers = {'Content-Type': 'application/json',
       'projectName': New001,
       'cloudRegions':{'REGION1':'centralus'},
       'cloudAccountName':'XXX-XXXX-XXXX'
      }

 r = requests.post(url, headers=headers)

Проблема в том, что я не могу сделать запрос, где cloudRegions будет отформатирован правильно. Значение в формате словаря, но это не нравится. Я пытался обернуть его в str (), используя json.loads (), json.dumps (), но он всегда форматируется неправильно. Как мне отформатировать его как объект, который будет принят как пара?

Этот CURL работает, и вы увидите тот же формат:

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ 
   "projectName": "New001", \ 
   "cloudRegions":{"REGION1":"centralus"}, \ 
   "cloudAccountName":"XXX-XXXX-XXXX" \ 
 }' 'http://www.myexample.com'

1 Ответ

0 голосов
/ 11 мая 2018

Вы используете заголовки HTTP для отправки ваших данных (что очень необычно ), в то время как ваш пример curl ясно показывает, что вы должны отправлять данные в теле HTTP, отформатированном в формате JSON. requests может сделать это очень легко.

Так что просто используйте:

url = 'www.myexample.com'

data = {'projectName': 'New001',
        'cloudRegions': {'REGION1':'centralus'},
        'cloudAccountName': 'XXX-XXXX-XXXX'
       }

 r = requests.post(url, json=data)
...