【问题标题】:API doesn't accept requests.put HTTP call, JSON formattingAPI 不接受 requests.put HTTP 调用,JSON 格式
【发布时间】:2015-07-08 22:32:17
【问题描述】:

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

调用在浏览器中完成时有效,因此我知道此参数的值是正确的。如何正确发送此呼叫?

【问题讨论】:

  • 布尔值 false 在 Python 中大写:False

标签: python json python-requests


【解决方案1】:

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

注意python中False的大写。

【讨论】:

    【解决方案2】:

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

    PS:这也是您将 python 的 None 转换为 json 的 null 和其他 json 特定关键字的方法。

    【讨论】:

      猜你喜欢
      • 2017-02-24
      • 2017-08-29
      • 2020-06-10
      • 1970-01-01
      • 2021-12-04
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 2016-01-22
      相关资源
      最近更新 更多