我创建了一个Arduino以太网草图,这样在按钮按下时,它会请求一个URL(http://myserver.lan/sensors/garage.php)。我的想法是,然后我可以使用这个PHP脚本来提取一个单独的URL,我可以更新而无需重新刷新Arduino。这个单独的URL驱动某些家庭自动化事件。
我在garage.php
中尝试了以下内容:
<?php
$homepage = file_get_contents('http://myserver.lan/test/');
?>
这适用于我的浏览器,但不适用于Arduino主板。两者的日志如下:
Arduino的:
192.168.2.50 - - [21/Mar/2013:13:43:58 -0400] "GET /sensors/garage.php HTTP/1.1" 400 515 "-" "-"
Safari浏览器:
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的情况下实现这一目标。
答案 0 :(得分:1)
注意Arduino请求的日志如何显示服务器响应的响应代码为400
(错误请求)。您的Arduino代码未发送有效的HTTP请求,原因有两个:
Host:
标头。请改为尝试:
EthernetClient client;
if (client.connect(rackserver, 80)) {
client.println("GET /sensors/garage.php HTTP/1.0");
client.println();
}
client.stop();