Uno + Ethernet : erreur de requête GET

Bonjour,

Voila plusieurs jours que je galère pour une simple requête GET pour envoyer des données sur un serveur distant…

Mon programme ci-dessous lit les données à envoyer sur le port Serial et les envoie via une requête GET.

Mais impossible de voir mes données sur le serveur (pourtant, un appel à la page arduino.php via un navigateur fonctionne parfaitement.

Merci d’avance pour votre aide

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

byte mac[] = {0x90, 0xA2, 0xDA, 0x80, 0x0A, 0x4C};
byte serverIp[] = {200, 100, 30, 10}; 

EthernetClient client;
String message;

void setup() {
  Serial.begin(9600);
  Serial.println("SETUP BEGIN");
  while(Ethernet.begin(mac) == 0) {
    Serial.println("DHCP failed");
    delay(15000);
  }
  Serial.println("DHCP succeed");
  message = "";
  Serial.println("LOOP BEGIN");
}

void loop() {
  char c;
  while(Serial.available()) {
    c = Serial.read();
    message = message + c;
  }
  if(c == '#') {
    send(message);
    message = "";
  }
}

boolean send(String message) {
  if(!client.connected()) {
    Serial.println("disconnecting.");
    client.stop();
  }
  if(client.connect(serverIp, 80)) {
    Serial.print("Sending message : ");
    Serial.println(message);
    client.print("GET /arduino.php?key=pass&data=");
    client.print(message);
    client.println(" HTTP/1.1");
    client.println("Host: www.monsite.fr");
    client.println("Connection: close");
    client.println();
  } else {
    Serial.println("Connection failed");
  }
}

Bonjour,

Tu as quoi dans "message" ? En HTTP tu doit encoder pas mal dans l'url, les espaces deviennent %20, etc etc ... Si ton message contient des caractéres spéciaux, des espaces, ... tu devrais faire un POST au lieu d'un GET et mettre le message dans le corps de la requête.

client.println(F("POST/arduino.php?key=pass HTTP/1.1"));
client.println(F("Host: www.monsite.fr")); // Vérifie que ton serveur répond bien sur le bon sous domaine ;)
client.println(F("Connection: close"));
client.println();
client.print(message);