我正在尝试通过PUT从arduino发送一个JSON字符串,以便控制飞利浦Hue智能灯。我用Google搜索并发现了很多关于POST和GET的内容,但在PUT上并不多。我试图将“{”on“:false}”发送到我当地的Hue桥(/ api / [key] / lights / 3 / state),但现在不要如何格式化它。有人可以帮忙吗?
当我使用Hue的调试工具成功发送请求时,这是控制台信息:
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection keep-alive
Content-Length 12
Content-Type text/plain; charset=UTF-8
Host 192.168.1.8
Referer http://192.168.1.8/debug/clip.html
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:12.0) Gecko/20100101 Firefox/12.0
这是我一直在尝试的,但未成功:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x83, 0x9D };
byte ip[] = { 192, 168, 1, 199 };
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };
void setup()
{
Ethernet.begin(mac, ip);
Serial.begin(9600);
delay(1000);
}
void loop()
{
EthernetClient client;
IPAddress server(192,168,1,8);
if (client.connect(server,80))
{
client.println("PUT /api/[key]/lights/3/state HTTP/1.1");
client.println("Connection: keep-alive");
client.println("Content-Type: text/plain; charset=UTF-8");
client.println("Content-Length: 12");
client.println("\"on\":false");
}
else
{
Serial.println("Connection Failed.");
Serial.println();
}
delay(5000);
}
我也尝试过:
"Content-Type: application/x-www-form-urlencoded"
而不是UTF-8。
根据API,打开/关闭灯光应该只是将带有{“on”:true / false}的PUT请求发送到Hue桥。
答案 0 :(得分:3)
尝试发送格式如下的json:
client.println("{\"on\":false}");