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

API doesn't accept requests.put HTTP call, JSON formatting

我正在尝试使用 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

调用在浏览器中完成后有效,所以我知道此参数的值是正确的。我怎样才能正确发送这个电话?

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

注意 python 中 False 的大写。

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

PS:这也是将 python 的 None 转换为 json 的 null 和其他 json 的方式具体关键字。