Subversion Repositories ESP8266_P1_Meter

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 raymond 1
// SPDX-License-Identifier: LGPL-3.0-or-later
2
// Copyright 2016-2026 Hristo Gochkov, Mathieu Carbou, Emil Muratov, Will Miles
3
 
4
//
5
// Query and send headers
6
//
7
 
8
#include <Arduino.h>
9
#if defined(ESP32) || defined(LIBRETINY)
10
#include <AsyncTCP.h>
11
#include <WiFi.h>
12
#elif defined(ESP8266)
13
#include <ESP8266WiFi.h>
14
#include <ESPAsyncTCP.h>
15
#elif defined(TARGET_RP2040) || defined(TARGET_RP2350) || defined(PICO_RP2040) || defined(PICO_RP2350)
16
#include <RPAsyncTCP.h>
17
#include <WiFi.h>
18
#endif
19
 
20
#include <ESPAsyncWebServer.h>
21
 
22
static AsyncWebServer server(80);
23
 
24
void setup() {
25
  Serial.begin(115200);
26
 
27
#if ASYNCWEBSERVER_WIFI_SUPPORTED
28
  WiFi.mode(WIFI_AP);
29
  WiFi.softAP("esp-captive");
30
#endif
31
 
32
  //
33
  // curl -v http://192.168.4.1
34
  //
35
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
36
    //List all collected headers
37
    int headers = request->headers();
38
    int i;
39
    for (i = 0; i < headers; i++) {
40
      const AsyncWebHeader *h = request->getHeader(i);
41
      Serial.printf("HEADER[%s]: %s\n", h->name().c_str(), h->value().c_str());
42
    }
43
 
44
    AsyncWebServerResponse *response = request->beginResponse(200, "text/plain", "Hello World!");
45
 
46
    //Add header to the response
47
    response->addHeader("Server", "ESP Async Web Server");
48
 
49
    //Add multiple headers with the same name
50
    response->addHeader("Set-Cookie", "sessionId=38afes7a8", false);
51
    response->addHeader("Set-Cookie", "id=a3fWa; Max-Age=2592000", false);
52
    response->addHeader("Set-Cookie", "qwerty=219ffwef9w0f; Domain=example.com", false);
53
 
54
    //Remove specific header
55
    response->removeHeader("Set-Cookie", "sessionId=38afes7a8");
56
 
57
    //Remove all headers with the same name
58
    response->removeHeader("Set-Cookie");
59
 
60
    request->send(response);
61
  });
62
 
63
  server.begin();
64
}
65
 
66
void loop() {
67
  //Sleep in the loop task to not keep the CPU busy
68
  delay(1000);
69
}