ESP32 - HTTP-Anfrage

Dieses Tutorial zeigt Ihnen, wie Sie den ESP32 verwenden, um HTTP-Anfragen an einen Webserver, eine API oder einen Webdienst zu senden. Im Detail lernen Sie Folgendes:

ESP32-Web-Client

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×(Optional) DC-Stromanschluss
1×Breadboard
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Grundkonzepte des Web-Clients und des Web-Servers

Es gibt einige grundlegende Konzepte des Webs, wie z. B.: Webadresse (URL), Hostname, Pfad, Abfragezeichenfolge, HTTP-Anfrage... Sie können dazu im HTTP-Tutorial detaillierte Informationen finden.

Wie man eine HTTP-Anfrage sendet

  • Bibliotheken einbinden
#include <WiFi.h> #include <HTTPClient.h>
  • WLAN-SSID und Passwort festlegen
const char WIFI_SSID[] = "YOUR_WIFI_SSID"; // ÄNDERE ES const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD"; // ÄNDERE ES
  • Deklariere Hostname, Pfad, Abfragezeichenfolge
String HOST_NAME = "http://YOUR_DOMAIN.com"; // BITTE ANPASSEN String PATH_NAME = "/products/arduino"; // BITTE ANPASSEN //String PATH_NAME = "/products/arduino.php"; // BITTE ANPASSEN String queryString = "temperature=26&humidity=70"; // Optional
  • Deklariere ein HTTP-Client-Objekt.
HTTPClient http;
  • Bei bestehender Verbindung zum Server eine HTTP-Anfrage senden. Zum Beispiel HTTP GET
http.begin(HOST_NAME + PATH_NAME); //HTTP int httpCode = http.GET();
  • Lies die Antwortdaten vom Webserver.
// httpCode wird bei Fehlern negativ sein if (httpCode > 0) { // Datei auf dem Server gefunden if (httpCode == HTTP_CODE_OK) { String payload = http.getString(); Serial.println(payload); } else { // HTTP-Header wurde gesendet und der Server-Antwort-Header wurde verarbeitet Serial.printf("[HTTP] GET... code: %d\n", httpCode); } } else { Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str()); } http.end();

Wie man Daten in eine HTTP-Anfrage einfügt

Wir können Daten an den Webserver senden, indem wir Daten in die HTTP-Anfrage einfügen. Das Format der Daten hängt von der HTTP-Anfragemethode ab:

  • Für HTTP-GET-Anfrage
    • Daten können nur im Abfrage-String der URL gesendet werden.
  • HTTP-POST-Anfrage
    • Daten können NICHT NUR im Abfrage-String-Format SONDERN AUCH in allen anderen Formaten wie JSON, XML, Bild ...
    • Daten werden im HTTP-Request-Body platziert.

    Lernen wir, wie man Daten im Abfragezeichenfolgenformat sowohl für HTTP GET als auch für POST sendet.

    • Erstelle eine Abfragezeichenfolge
    int temp = // vom Sensor int humi = // vom Sensor String queryString = String("temperature=") + String(temp) + String("&humidity=") + String(humi);
    • HTTP GET: Abfragezeichenfolge zu Pfadname hinzufügen
    http.begin(HOST_NAME + PATH_NAME + "?" + queryString); http.addHeader("Content-Type", "application/x-www-form-urlencoded"); int httpCode = http.GET();
    • HTTP POST: lege Abfragezeichenfolge in den HTTP-Body.
    http.begin(HOST_NAME + PATH_NAME); http.addHeader("Content-Type", "application/x-www-form-urlencoded"); int httpCode = http.POST(queryString);
    • Für GET und POST die Antwortdaten vom Webserver lesen.
    // httpCode wird bei einem Fehler negativ sein if (httpCode > 0) { // Datei auf dem Server gefunden if (httpCode == HTTP_CODE_OK) { String payload = http.getString(); Serial.println(payload); } else { // Der HTTP-Header wurde gesendet und der Server-Antwort-Header wurde behandelt Serial.printf("[HTTP] GET/POST... code: %d\n", httpCode); } } else { Serial.printf("[HTTP] GET/POST... failed, error: %s\n", http.errorToString(httpCode).c_str()); } http.end();

Vollständiger ESP32-Code zum Senden einer HTTP-Anfrage

Unten finden Sie den vollständigen ESP32-Code zum Durchführen von HTTP-GET- und HTTP-POST-Anfragen.

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32/esp32-http-request */ #include <WiFi.h> #include <HTTPClient.h> const char WIFI_SSID[] = "YOUR_WIFI_SSID"; // CHANGE IT // CHANGE IT const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD"; // CHANGE IT String HOST_NAME = "http://YOUR_DOMAIN.com"; // CHANGE IT String HOST_NAME = "http://YOUR_DOMAIN.com"; // CHANGE IT //String PATH_NAME = "/products/arduino.php"; // CHANGE IT void setup() { Serial.begin(9600); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.println("Connecting"); while(WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to WiFi network with IP Address: "); Serial.println(WiFi.localIP()); HTTPClient http; http.begin(HOST_NAME + PATH_NAME); //HTTP int httpCode = http.GET(); // httpCode will be negative on error if(httpCode > 0) { // file found at server if(httpCode == HTTP_CODE_OK) { String payload = http.getString(); Serial.println(payload); } else { // HTTP header has been send and Server response header has been handled Serial.printf("[HTTP] GET... code: %d\n", httpCode); } } else { Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str()); } http.end(); } void loop() { }

Vollständiger ESP32-Code zum Durchführen einer HTTP-GET-Anfrage mit Daten

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32/esp32-http-request */ #include <WiFi.h> #include <HTTPClient.h> const char WIFI_SSID[] = "YOUR_WIFI_SSID"; // CHANGE IT const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD"; // CHANGE IT String HOST_NAME = "http://YOUR_DOMAIN.com"; // CHANGE IT String PATH_NAME = "/products/arduino"; // CHANGE IT //String PATH_NAME = "/products/arduino.php"; // CHANGE IT String queryString = "temperature=26&humidity=70"; void setup() { Serial.begin(9600); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.println("Connecting"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to WiFi network with IP Address: "); Serial.println(WiFi.localIP()); HTTPClient http; http.begin(HOST_NAME + PATH_NAME + "?" + queryString); http.addHeader("Content-Type", "application/x-www-form-urlencoded"); int httpCode = http.GET(); // httpCode will be negative on error if (httpCode > 0) { // file found at server if (httpCode == HTTP_CODE_OK) { String payload = http.getString(); Serial.println(payload); } else { // HTTP header has been send and Server response header has been handled Serial.printf("[HTTP] GET... code: %d\n", httpCode); } } else { Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str()); } http.end(); } void loop() { }

Vollständiger ESP32-Code zum Senden einer HTTP-POST-Anfrage mit Daten

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32/esp32-http-request */ #include <WiFi.h> #include <HTTPClient.h> const char WIFI_SSID[] = "YOUR_WIFI_SSID"; // CHANGE IT const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD"; // CHANGE IT String HOST_NAME = "http://YOUR_DOMAIN.com"; // CHANGE IT String PATH_NAME = "/products/arduino"; // CHANGE IT //String PATH_NAME = "/products/arduino.php"; // CHANGE IT String queryString = "temperature=26&humidity=70"; void setup() { Serial.begin(9600); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.println("Connecting"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to WiFi network with IP Address: "); Serial.println(WiFi.localIP()); HTTPClient http; http.begin(HOST_NAME + PATH_NAME); http.addHeader("Content-Type", "application/x-www-form-urlencoded"); int httpCode = http.POST(queryString); // httpCode will be negative on error if (httpCode > 0) { // file found at server if (httpCode == HTTP_CODE_OK) { String payload = http.getString(); Serial.println(payload); } else { // HTTP header has been send and Server response header has been handled Serial.printf("[HTTP] POST... code: %d\n", httpCode); } } else { Serial.printf("[HTTP] POST... failed, error: %s\n", http.errorToString(httpCode).c_str()); } http.end(); } void loop() { }

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!