🛠 Récupérer une page web en HTTP simple
Objetivos
Tras la conexión de estación del tutorial anterior, establecer un socket TCP sin procesar en el puerto 80 con WiFiClient y escribir a mano una solicitud HTTP/1.1 (GET, cabecera Host, Connection: close), y luego leer la respuesta byte a byte. Se comprende lo que una biblioteca HTTP de «alto nivel» hace por nosotros — y por qué HTTPS vendrá justo después.
Material
- 1 × Arduino MKR WiFi 1010 ya capaz de conectarse a WiFi (tutorial scan/STA)
- Acceso a un sitio HTTP público de prueba (p. ej.
example.com) - Sin certificado ni clave: aquí todo circula en claro, únicamente para aprender
Código completo
#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
Verificación esperada
El monitor serie vuelca el HTML completo de la página (cabeceras de respuesta + cuerpo). Se debe llamar a client.stop para liberar el socket del módulo; de lo contrario, las conexiones siguientes pueden quedar bloqueadas. En una red cautiva (hotel, empresa), la conexión TCP se establece pero devuelve la página de autenticación en su lugar.
Errores frecuentes
- Olvidar la cabecera
Host:: en HTTP/1.1 es obligatoria, los alojamientos virtuales devuelven un error 400. - No leer la respuesta antes de
client.stop: los datos se pierden junto con el socket. - Bucle
while (client.available)demasiado corto: si el servidor envía por fragmentos, espere tambiénclient.connectedcon un tiempo de espera, de lo contrario truncará el cuerpo. - Apuntar a un sitio HTTPS con
WiFiClienten el puerto 443: el apretón de manos falla silenciosamente — este es el tema del tutorial WiFiSSLClient. - Reutilizar el mismo
clientsinstopentre dos solicitudes: agota los sockets disponibles del NINA.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
scan-wifi.inoArduinoconnexion-wpa2.inoArduinohttp-get.inoArduinoserveur-web-led.inoArduinohorloge-ntp.inoArduinoudp-diffusion.inoArduino