我有一个非常简单的问题,但我无法弄明白该怎么做。我遇到的问题是我想使用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'发送,因此这不是一个选项。有人建议吗?谢谢!
答案 0 :(得分:16)
你需要对它进行json编码才能将其变为字符串。
import json
payload = json.dumps({"on":True})
答案 1 :(得分:1)
应该是{'on':True},大写T
答案 2 :(得分:0)
使其变为小写(如果这是您的端点所要求的),请使用引号{'on':'true'}
答案 3 :(得分:0)
从请求 2.4.2 开始,您可以像这样使用 json
parameter,而不是使用 data
参数传入负载:
payload = {'on': True}
requests.put(url, json=payload)
并且请求将被正确格式化为 json 负载(即 {'on': true}
)。