🛠 Client HTTP : récupérer une page en GET

Arduino GIGA R1 WiFi · intermediaire · Schéma : IMG-giga-r1-wifi-intermediaire-4-client-http-get.svg — GIGA R1 WiFi connectée au routeur puis à un serveur web distant, requête GET partant vers le cloud et réponse HTML revenant vers le moniteur série

Objetivos

Conectar la GIGA R1 WiFi a una red WPA2 en modo estación, y luego enviar una solicitud HTTP GET sin procesar con WiFiClient y leer la respuesta. Aprenderás principalmente el reflejo propio de esta placa: vaciar siempre por completo el cuerpo de la respuesta TCP, ya que en el núcleo mbed los cuerpos TCP no leídos contaminan las conexiones siguientes (problema ArduinoCore-mbed #937).

Material

Código completo

// GIGA R1 WiFi — client HTTP GET (HTTP simple, sans TLS : voir le tuto HTTPS)
#include <WiFi.h>

const char SSID[] = "your-ssid";
const char PASS[] = "your-pass";              // WPA2
const char SERVEUR[] = "example.org";
const int PORT = 80;

void connexion {
  Serial.print("Connexion a "); Serial.print(SSID);
  WiFi.begin(SSID, PASS);
  while (WiFi.status != WL_CONNECTED) { Serial.print("."); delay(200); }
  Serial.print(" OK — IP "); Serial.println(WiFi.localIP);
}

void setup {
  Serial.begin(115200);
  while (!Serial) {}
  connexion;

  WiFiClient client;
  if (!client.connect(SERVEUR, PORT)) { Serial.println("Connexion TCP echouee"); return; }
  client.print("GET / HTTP/1.0\r\n");
  client.print("Host: "); client.println(SERVEUR);
  client.print("Connection: close\r\n\r\n");

  unsigned long debut = millis;
  while (client.connected && millis - debut < 10000) {
    while (client.available) {
      Serial.write(client.read);   // on TOUT lit : ne jamais laisser des octets
    }                                // en attente (issue #937 sur le core mbed)
  }
  client.stop;                     // purge + fermeture propre
  Serial.println("\n--- fin de la reponse ---");
}

void loop {
  if (WiFi.status != WL_CONNECTED) WiFi.reconnect;
  delay(5000);
}

Verificación esperada

Después de la línea « Conexión a ... OK — IP 192.168.x.x », el monitor serie vuelca el HTML devuelto por el servidor (el contenido de la página de ejemplo), seguido de « --- fin de la respuesta --- ». Ejecuta el sketch varias veces: cada conexión debe tener éxito — es exactamente aquí donde el vaciado completo del flujo evita los bloqueos del problema #937.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales