我一直在寻找与我类似的许多问题,但我找不到解决方案。
我正在使用请求来执行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 但没有成功。
答案 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)