API不接受requests.put HTTP调用,JSON格式化

时间:2015-07-08 22:32:18

标签: python json python-requests

我正在尝试使用Python的Requests HTTP库进行HTTP调用。

我有这段代码:

import requests
import json

body = json.dumps({"on": "false"})
url = "http://192.168.100.100/api/0000/lights/4/state"
r = requests.put(url=url, data=body)

然而,API以

响应
"error": {
            "type": 7,
            "address": "/lights/4/state/on",
            "description": "invalid value,  true }, for parameter, on"

我不完全确定问题是什么,但可能是BODY格式错误; r.request.body说

{"on": "false"}

什么时候应该

{"on": false}

如果我从代码中删除引号

NameError: name 'false' is not defined

在浏览器中完成调用后,我知道该参数的值是正确的。我该如何正确发送此电话?

2 个答案:

答案 0 :(得分:0)

尝试将body = json.dumps({"on": "false"})更改为body = json.dumps({"on": False})

请注意python中False的大小写。

答案 1 :(得分:0)

API可能正在寻找json bool作为键on的值。如果是这种情况,则json.dumps({"on":False})将python bool False转换为字符串中的json bool false

PS:这也是你如何将python的None转换为json的null和其他特定于json的关键字。