21

我有一个非常简单的问题,但我不知道该怎么做。我遇到的问题是我想使用 Python 和请求发送以下有效负载:

{ 'on': true }

这样做:

payload = { 'on':true }
r = requests.put("http://192.168.2.196/api/newdeveloper/lights/1/state", data = payload)

不起作用,因为我收到以下错误:

NameError: name 'true' is not defined

我的服务器不接受将true发送为“true” ,因此这不是一个选项。有人建议吗?谢谢!

4

4 回答 4

27

您需要对其进行 json 编码以将其转换为字符串。

import json 
payload = json.dumps({"on":True})
于 2013-07-31T20:43:40.113 回答
5

应该是 {'on': True},大写 T

于 2013-07-31T20:37:56.140 回答
0

使它成为像这样的小写(如果这是您的端点所需要的)在引号中执行 {'on':'true'}

于 2019-05-03T23:17:15.437 回答
0

从 requests 2.4.2 开始data,您可以像这样使用参数json而不是使用参数传入有效负载:

payload = {'on': True}
requests.put(url, json=payload)

并且请求将被正确格式化为 json 有效负载(即{'on': true})。

于 2021-06-30T17:48:57.183 回答