Esp8266 envoyer une url pour un fichier php avec $_GET

Bonjour,

J'ai, pour l'exemple, une page web https://e-emploi.be/ toute simple en php avec $_GET. Essayez par exemple https://e-emploi.be/?cle=123456 elle s'affiche tout en haut à gauche

Je me connecte correctement au réseau local, mais pas moyen d’accéder au serveur :

Connecting to Renard_16
...........WiFiCon=1

WiFi connected
IP address: 
192.168.0.98
>>> Connecting to host: e-emploi.be
**HTTP/1.1 400 Bad Request**
>>> Closing host: e-emploi.be

Voici la partie du code concernée.
Autre chose gênante, on ne peut que se connecter qu'au domaine et pas à une page précise. Cela limite pas mal !

Un grand merci !
esp8266_essai_GET.ino (2.5 KB)

// IP or name of address root: ie: google.com
// NOT google.com/nothing/after/the/dotcom.html
const char* hostGet = "e-emploi.be";

void postData() {

  WiFiClient clientGet;
  const int httpGetPort = 80;


  // We now create and add parameters:


  String urlGet = "?cle=123456";

  Serial.print(">>> Connecting to host: ");
  Serial.println(hostGet);

  if (!clientGet.connect(hostGet, httpGetPort)) {
    Serial.print("Connection failed: ");
    Serial.print(hostGet);
  } else {
    clientGet.println("GET " + urlGet + " HTTP/1.1");
    clientGet.print("Host: ");
    clientGet.println(hostGet);
    clientGet.println("User-Agent: ESP8266/1.0");
    clientGet.println("Connection: close\r\n\r\n");

    unsigned long timeoutP = millis();
    while (clientGet.available() == 0) {

      if (millis() - timeoutP > 10000) {
        Serial.print(">>> Client Timeout: ");
        Serial.println(hostGet);
        clientGet.stop();
        return;
      }
    }

    //just checks the 1st line of the server response. Could be expanded if needed.
    while (clientGet.available()) {
      String retLine = clientGet.readStringUntil('\r');
      Serial.println(retLine);
      break;
    }

  } //end client connection if else

  Serial.print(">>> Closing host: ");
  Serial.println(hostGet);

  clientGet.stop();

}

Je pense que ce site te donnera quelques pistes

Bonjour lesept,

Oui je connais ce site. Pour être plus clair, ce n'est pas un GET que veux faire, mais construire une url du type http://exemple.com/page/?cle=123456

ce qui envoie un GET au serveur HTTP :slight_smile:

Bonjour à vous deux,

De toute façon, j'avais déjà vu ce code... Il ne fonctionne pas


D:\Cloud\Google Drive\_Develop\arduino\codes\nodeMCU\sketch_aug11d\sketch_aug11d.ino: In function 'void loop()':
sketch_aug11d:28:15: error: call to 'HTTPClient::begin' declared with attribute error: obsolete API, use ::begin(WiFiClient, url)
   28 |     http.begin("http://jsonplaceholder.typicode.com/users/1");  //Specify request destination
      |     ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
exit status 1
call to 'HTTPClient::begin' declared with attribute error: obsolete API, use ::begin(WiFiClient, url)

le compilateur dit ce qu'il faut utiliser

Le core ESP8266 a évolué. Il suffit d'ajouter une variable :

  WiFiClient client;
  HTTPClient http;
  http.begin(client, url);
  int httpCode = http.GET();
  // etc.

La documentation actualisée du core ESP8266 pour IDE Arduino est içi , avec une partie importante sur les WiFi

https://arduino-esp8266.readthedocs.io/en/3.0.2/

Merci à toutes et tous,

Mon problème est résolu, et avec peu de lignes de code.
Je suis loin d'être compétent en matière de réseau, l'informatique est très vaste !

Merci encore !