python请求POST 400错误

时间:2017-04-11 08:36:32

标签: python python-requests

我一直在寻找与我类似的许多问题,但我找不到解决方案。

我正在使用请求来执行POST请求。我在请求中尝试了很多组合,但没有任何东西返回201确定。

这是我的代码:

 import json
 import requests

 if __name__ == '__main__':

    headers = {'content-type' : 'application/json'}
    url = "http://myserver/ext/v3.1/test_device"
    message = {"atribute_a": "value", "atribute_b": "valueb"}
    params = {"priority":"normal"}

    r = requests.post(url, params=params, headers=headers, data = json.dumps(message) )
    print(r)

我也试过了你的json.dumps,但它也给了我400个不好的请求。我还尝试将params直接添加到网址中,例如: ...?priority = normal 但没有成功。

2 个答案:

答案 0 :(得分:4)

根据评论,您的服务器实际上期望数据作为字符串化的JSON对象。 就params而言,如果它们被宣布为元组元组(或词典的元组),它很可能会有所帮助

尝试以下方法 -

headers = {
    'content-type': 'application/json',
}

params = (
    ('priority', 'normal'),
)

data = {
    "atribute_a": "value",
    "atribute_b": false
}

requests.post(url, headers=headers, params=params, data=str(data))

答案 1 :(得分:1)

最简单的方法是使用json代替data,如下所示:

requests.post(url, headers=headers, params=params, json=data)