2017-04-11 89 views
3

我一直在寻找类似地雷的许多问题,但我无法找到一个解决方案。蟒蛇请求接线柱400错误

我使用请求执行POST请求。我在请求中尝试了很多组合,但没有返回201 OK。

这里是我的代码:

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) 

我也试过withou json.dumps但它也给了我400错误的请求。我也试过直接添加PARAMS到URL,如:?...优先级=正常,但没有成功。

+0

是不是有应该是requests.post中params和headers之间的逗号? –

+0

是的@GauravOjha当然。我用逗号测试。只是一个错误的副本和过去 – lmbcerqueira

+0

您是否尝试直接使用data = message而不是json.dumps? –

回答

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))