Arduino以太网+ PHP请求

时间:2017-08-13 21:33:19

标签: php mysql arduino ethernet

我正在为Arduino + ethernet shield编写代码,以便使用$_GET方法(PHP)将数据发送到Mysql数据库。

我已经在浏览器上测试了PHP代码并且工作正常,但是在Arduino上它没有用。我不知道问题出在哪里。我一直在寻找其他论坛,找不到任何答案。以下是我的代码,如果有人能帮助解决崩溃,我将不胜感激

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
byte ip[] = { 192, 168, 1, 60 }; //IP (WEB CLIENT)
byte server[] = { 192, 168, 1, 8 }; //IP (SERVER) 
EthernetClient client;

void setup() { 
  Serial.begin(9600);  
  Ethernet.begin(mac, ip);
  if (client.connect(server, 8095)) {        
    Serial.println("CONECTED");
    client.print("GET http://192.168.1.8:8095/prs/Query.php?a=");
    client.print(2);
    client.print(" HTTP/1.1\r\n");
    Serial.println("Information sent successfully!"); 
    delay(1000);
  } else {
    Serial.println("Conection fail");
  }
}

void loop() { 
}

2 个答案:

答案 0 :(得分:0)

我注意到以太网客户端变量/对象被称为cliente(末尾有一个e),其中声明了它,但是在这之下,对象的名称是client(最后没有e),如果你纠正了这个区别这个名字有用吗?

EthernetClient cliente;

client.connect(server, 8095)

答案 1 :(得分:0)

client.print("GET http://192.168.1.8:8095/prs/Query.php?a=");
client.print(2);
client.print(" HTTP/1.1\r\n");

这不是格式正确的HTTP 1.1请求:

  1. 它包含请求行中的协议,主机名和端口。这在HTTP代理请求之外是不合适的。

  2. 它不包含Host标题。

  3. 请求后不包含两个换行符。

  4. 正确的请求可能类似于:

    "GET /prs/Query.php?a=2\r\nHost: 192.168.1.8\r\n\r\n"