0

我创建了一个 Arduino 以太网草图,这样在按下按钮时,它会请求一个 URL(http://myserver.lan/sensors/garage.php)。我的想法是,然后我可以使用这个PHP脚本来提取一个单独的 URL,我可以更新它而无需重新刷新 Arduino。这个单独的 URL 驱动某些家庭自动化事件。

我尝试了以下内容garage.php

<?php
    $homepage = file_get_contents('http://myserver.lan/test/');
?>

这适用于我的浏览器,但不适用于 Arduino 板。两者的日志如下:

阿杜诺:

192.168.2.50 - - [21/Mar/2013:13:43:58 -0400] "GET /sensors/garage.php HTTP/1.1" 400 515 "-" "-"

苹果浏览器:

192.168.2.3 - - [21/Mar/2013:13:43:28 -0400] "GET /test/ HTTP/1.0" 200 2235 "-" "-"
192.168.2.65 - - [21/Mar/2013:13:43:28 -0400] "GET /sensors/garage.php HTTP/1.1" 200 293 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.28.10 (KHTML, like Gecko) Version/6.0.3 Safari/536.28.10"

为了完整起见,这是我的 Arduino 草图中的代码示例:

EthernetClient client;
if (client.connect(rackserver, 80)) {
    client.println("GET /sensors/garage.php HTTP/1.1");
}
client.stop();

如何修复 PHP 脚本?我希望在不重新刷新我的 Arduino 的情况下做到这一点。

4

1 回答 1

1

400请注意 Arduino 请求的日志如何显示服务器以(错误请求)的响应代码进行响应。您的 Arduino 代码未发送有效的 HTTP 请求,原因有两个:

  1. 有效的 HTTP 请求以空行结束。
  2. 您指定了 HTTP 版本 1.1,它要求请求包含Host:标头。

试试这个:

EthernetClient client;
if (client.connect(rackserver, 80)) {
  client.println("GET /sensors/garage.php HTTP/1.0");
  client.println();
}
client.stop();
于 2013-03-22T00:29:31.850 回答