在Python中格式化请求的标头字典

时间:2018-05-11 13:50:12

标签: python header python-requests

我的请求标头格式如下:

{
  "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的格式正确发出请求。值是字典格式,但它不喜欢。我已经尝试使用json.loads(),json.dumps()将它包装在str()中,但它总是格式错误。如何将其格式化为可以成对接受的对象?

此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 :(得分:1)

您正在使用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)