#include #include #include // Enable or disable collecting all headers #define COLLECT_ALL_HEADERS true void setup() { Serial.begin(115200); Serial.println(); Serial.println(); Serial.println(); for (uint8_t t = 4; t > 0; t--) { Serial.printf("[SETUP] WAIT %d...\n", t); Serial.flush(); delay(1000); } WiFi.begin("SSID", "PASSWORD"); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.println("Connected to WiFi: " + WiFi.SSID()); } void loop() { HTTPClient http; Serial.print("[HTTP] Preparing HTTP request...\n"); // This page will return the headers we want to test + some others http.begin("https://httpbingo.org/response-headers?x-custom-header=value:42"); #if COLLECT_ALL_HEADERS // Collect all headers http.collectAllHeaders(); #else // Collect specific headers, only that one will be stored const char *headerKeys[] = {"x-custom-header"}; const size_t headerKeysCount = sizeof(headerKeys) / sizeof(headerKeys[0]); http.collectHeaders(headerKeys, headerKeysCount); #endif Serial.print("[HTTP] Sending HTTP GET request...\n"); // start connection and send HTTP header int httpCode = http.GET(); // httpCode will be negative on error if (httpCode > 0) { // HTTP header has been send and Server response header has been handled Serial.printf("[HTTP] GET response code: %d\n", httpCode); Serial.println("[HTTP] Headers collected:"); for (size_t i = 0; i < http.headers(); i++) { Serial.printf("[HTTP] - '%s': '%s'\n", http.headerName(i).c_str(), http.header(i).c_str()); } Serial.println("[HTTP] Has header 'x-custom-header'? " + String(http.hasHeader("x-custom-header")) + " (expected true)"); Serial.printf("[HTTP] x-custom-header: '%s' (expected 'value:42')\n", http.header("x-custom-header").c_str()); Serial.printf("[HTTP] non-existing-header: '%s' (expected empty string)\n", http.header("non-existing-header").c_str()); #if COLLECT_ALL_HEADERS // Server response with multiple headers, one of them is 'server' Serial.println("[HTTP] Has header 'server'? " + String(http.hasHeader("server")) + " (expected true)"); Serial.printf("[HTTP] server: '%s'\n", http.header("server").c_str()); #endif } else { Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str()); } http.end(); Serial.println("[HTTP] end connection\n\n"); delay(5000); }