HTTP-klient
HTTP, Hypertext Transfer Protocol, er en applikationsprotokol. Den sender forespørgsler og svar oven på et netværk, hvor IP sørger for adressering. Netværksforbindelsen kan være WiFi eller en anden teknologi; her fokuserer vi på HTTP-laget og venter med andre netværkstyper.
Byte-rate: En HTTP-klient har ikke en fast hastighed i byte/s. Den begrænses af forbindelsen nedenunder og bruger desuden tid på at oprette forbindelse, sende headers og vente på serverens svar.
Forløbet
- En netværksklient forbinder til et netværk, for eksempel via WiFi.
- DNS eller en kendt IP-adresse identificerer serveren.
- TCP-forbindelsen oprettes til port 80 for HTTP eller 443 for HTTPS.
- Klienten sender for eksempel en
GET-forespørgsel. - Serveren sender statuslinje, headers og eventuelt indhold tilbage.
Minimal HTTP GET
#include <WiFiS3.h>
WiFiClient client;
const char server[] = "example.org";
void setup() {
Serial.begin(9600);
if (client.connect(server, 80)) {
client.println("GET / HTTP/1.1");
client.println("Host: example.org");
client.println("Connection: close");
client.println();
}
}
void loop() {
while (client.available()) {
Serial.write(client.read());
}
if (!client.connected()) {
client.stop();
}
}
Vigtige forskelle
- HTTP sender ukrypterede data og bruger typisk port 80.
- HTTPS bruger kryptering og certifikater og kræver en TLS-kompatibel klient.
- En IoT-klient bør håndtere timeout, manglende netværk og uventede HTTP-statuskoder.
- Adgangskoder, tokens og private serveradresser skal ikke skrives ind i offentlige eksempler.