Я пишу код для Arduino + ethernet щит для отправки данных с $_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() {
}
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"
Я заметил, что клиентская переменная / объект Ethernet называется cliente (с символом e в конце), где он объявлен, но под этим именем объекта является client (нет символа e в конце), если вы исправляете это различие в имени, оно делает это Работа?
EthernetClient cliente;
client.connect(server, 8095)