使用arduino发送PUT请求

时间:2013-12-27 23:50:56

标签: arduino put philips-hue

我正在尝试通过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桥。

1 个答案:

答案 0 :(得分:3)

尝试发送格式如下的json:

client.println("{\"on\":false}");