首页 文章

Arduino以太网PHP请求

提问于
浏览
-2

我正在为Arduino以太网屏蔽编写代码,以便使用 $_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
    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请求:

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

    • 它不包含 Host 标头 .

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

    正确的请求可能类似于:

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

    我注意到以太网客户端变量/对象被称为cliente(末尾有一个e),其中声明了它,但是在这之下,对象的名称是客户端(最后没有e),如果你更正了这个名称差异就行了工作?

    EthernetClient cliente;
    
    client.connect(server, 8095)
    

相关问题