ESP32 - HTTP Request
Deze tutorial legt uit hoe u de ESP32 gebruikt om een HTTP-request te maken naar een webserver, API of webservice. U leert in detail:
- Hoe u de ESP32 gebruikt om een HTTP-request te maken (GET en POST)
- Hoe u data van een sensor in de HTTP-request opneemt

Hardware Vereist
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.
Basisconcepten van Webclient en Webserver
Er zijn enkele basisbegrippen van het web zoals: webadres (URL), hostname, pathname, query string, HTTP Request... U kunt hierover meer lezen in de HTTP tutorial.
Hoe maakt u een HTTP Request
- Bibliotheken includeren
#include <WiFi.h>
#include <HTTPClient.h>
- WiFi SSID en wachtwoord declareren
const char WIFI_SSID[] = "YOUR_WIFI_SSID"; // WIJZIGEN
const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD"; // WIJZIGEN
- Declareer hostname, pathname, query string
String HOST_NAME = "http://YOUR_DOMAIN.com"; // WIJZIGEN
String PATH_NAME = "/products/arduino"; // WIJZIGEN
//String PATH_NAME = "/products/arduino.php"; // WIJZIGEN
String queryString = "temperature=26&humidity=70"; // OPTIONEEL
- Declareer een HTTP client object
HTTPClient http;
- Als verbonden met de server, verstuur HTTP-request. Bijvoorbeeld HTTP GET
http.begin(HOST_NAME + PATH_NAME); //HTTP
int httpCode = http.GET();
- Lees de response data van de webserver
// httpCode is negatief bij fout
if (httpCode > 0) {
// bestand gevonden op server
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println(payload);
} else {
// HTTP header is verzonden en server response header is afgehandeld
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
}
} else {
Serial.printf("[HTTP] GET... mislukt, fout: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
Hoe data opnemen in HTTP-request
We kunnen data naar de webserver versturen door data op te nemen in de HTTP-request. Het dataformaat hangt af van de HTTP-methode:
- Voor HTTP GET-request
- Data kan alleen in de query string van het pathname worden gestuurd.
- HTTP POST-request
- Data kan NIET ALLEEN in query string formaat gestuurd worden, MAAR OOK in elk ander formaat zoals JSON, XML, afbeelding ...
- Data wordt in de HTTP-request body geplaatst.
- Maak een query string
- HTTP GET: voeg query string toe aan pathname
- HTTP POST: plaats query string in HTTP body
- Voor zowel GET als POST, lees de response data van de webserver
Laten we leren hoe we data in query string formaat kunnen sturen voor zowel HTTP GET als POST
int temp = // van sensor
int humi = // van sensor
String queryString = String("temperature=") + String(temp) + String("&humidity=") + String(humi);
http.begin(HOST_NAME + PATH_NAME + "?" + queryString);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
int httpCode = http.GET();
http.begin(HOST_NAME + PATH_NAME);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
int httpCode = http.POST(queryString);
// httpCode is negatief bij fout
if (httpCode > 0) {
// bestand gevonden op server
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println(payload);
} else {
// HTTP header is verzonden en server response header is afgehandeld
Serial.printf("[HTTP] GET/POST... code: %d\n", httpCode);
}
} else {
Serial.printf("[HTTP] GET/POST... mislukt, fout: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
Complete ESP32 code voor het maken van HTTP-request
Hieronder vindt u de complete ESP32 code voor het maken van een HTTP GET/POST request
/*
* Deze ESP32 code is ontwikkeld door newbiely.nl
* Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld.
* Voor volledige instructies en schema's, bezoek:
* https://newbiely.nl/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() {
}
Complete ESP32 code voor het maken van HTTP GET request met data
/*
* Deze ESP32 code is ontwikkeld door newbiely.nl
* Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld.
* Voor volledige instructies en schema's, bezoek:
* https://newbiely.nl/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() {
}
Complete ESP32 code voor het maken van HTTP POST request met data
/*
* Deze ESP32 code is ontwikkeld door newbiely.nl
* Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld.
* Voor volledige instructies en schema's, bezoek:
* https://newbiely.nl/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() {
}