🛠 Récupérer une page web en HTTP simple
Objectifs
Après la connexion station du tuto précédent, établir un socket TCP brut sur le port 80 avec WiFiClient et écrire à la main une requête HTTP/1.1 (GET, en-tête Host, Connection: close), puis lire la réponse octet par octet. On comprend ce qu'une bibliothèque HTTP « haute couche » fait à notre place — et pourquoi le HTTPS viendra juste après.
Matériel
- 1 × Arduino MKR WiFi 1010 déjà capable de se connecter au WiFi (tuto scan/STA)
- Accès à un site HTTP public de test (ex.
example.com) - Pas de certificat ni de clé : ici tout circule en clair, uniquement pour apprendre
Code complet
#include <WiFiNINA.h>
const char* SSID = "votre-ssid";
const char* PASS = "votre-mot-de-passe";
WiFiClient client; // TCP simple (WiFiSSLClient pour TLS)
void setup {
Serial.begin(115200);
WiFi.begin(SSID, PASS);
while (WiFi.status != WL_CONNECTED) { delay(500); Serial.print("."); }
Serial.printf("\nIP: %s\n", WiFi.localIP.toString.c_str);
if (client.connect("example.com", 80)) {
client.println("GET / HTTP/1.1");
client.println("Host: example.com");
client.println("Connection: close");
client.println; // ligne vide = fin d'en-tetes
while (client.available)
Serial.write(client.read);
client.stop; // libere la connexion
} else {
Serial.println("Connexion TCP refusee");
}
}
void loop { delay(60000); } // une seule requette suffit
Vérification attendue
Le moniteur série déverse le HTML complet de la page (en-têtes de réponse + corps). client.stop doit être appelé pour libérer le socket du module ; sinon les connexions suivantes peuvent rester bloquées. Sur un réseau captif (hôtel, entreprise), la connexion TCP aboutit mais renvoie la page d'authentification à la place.
Erreurs fréquentes
- Oublier l'en-tête
Host:: en HTTP/1.1 il est obligatoire, les hébergeurs virtuels renvoient une erreur 400. - Ne pas lire la réponse avant
client.stop: les données sont perdues avec le socket. - Boucle
while (client.available)trop courte : si le serveur envoie par fragments, attendez aussiclient.connectedavec un timeout, sinon vous tronquez le corps. - Viser un site en HTTPS avec
WiFiClientsur le port 443 : la poignée de main échoue silencieusement — c'est le sujet du tuto WiFiSSLClient. - Réutiliser le même
clientsansstopentre deux requêtes : épuise les sockets disponibles du NINA.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
scan-wifi.inoArduinoconnexion-wpa2.inoArduinohttp-get.inoArduinoserveur-web-led.inoArduinohorloge-ntp.inoArduinoudp-diffusion.inoArduino