1- #include " ESPAsyncWebServer.h"
2- #include < AsyncTCP.h>
3- #include < DNSServer.h>
1+ //
2+ // A simple server implementation showing how to:
3+ // * serve static messages
4+ // * read GET and POST parameters
5+ // * handle missing pages / 404s
6+ //
7+
8+ #include < Arduino.h>
9+ #ifdef ESP32
410#include < WiFi.h>
11+ #include < AsyncTCP.h>
12+ #elif defined(ESP8266)
13+ #include < ESP8266WiFi.h>
14+ #include < ESPAsyncTCP.h>
15+ #endif
16+ #include < ESPAsyncWebServer.h>
517
6- DNSServer dnsServer;
718AsyncWebServer server (80 );
819
9- class CaptiveRequestHandler : public AsyncWebHandler {
10- public:
11- CaptiveRequestHandler () {}
12- virtual ~CaptiveRequestHandler () {}
20+ const char * ssid = " YOUR_SSID" ;
21+ const char * password = " YOUR_PASSWORD" ;
1322
14- bool canHandle (AsyncWebServerRequest* request) {
15- // request->addInterestingHeader("ANY");
16- return true ;
17- }
23+ const char * PARAM_MESSAGE = " message" ;
1824
19- void handleRequest (AsyncWebServerRequest* request) {
20- AsyncResponseStream* response = request->beginResponseStream (" text/html" );
21- response->print (" <!DOCTYPE html><html><head><title>Captive Portal</title></head><body>" );
22- response->print (" <p>This is out captive portal front page.</p>" );
23- response->printf (" <p>You were trying to reach: http://%s%s</p>" , request->host ().c_str (), request->url ().c_str ());
24- response->printf (" <p>Try opening <a href='http://%s'>this link</a> instead</p>" , WiFi.softAPIP ().toString ().c_str ());
25- response->print (" </body></html>" );
26- request->send (response);
27- }
28- };
25+ void notFound (AsyncWebServerRequest *request) {
26+ request->send (404 , " text/plain" , " Not found" );
27+ }
2928
3029void setup () {
31- // your other setup stuff...
32- WiFi.softAP (" esp-captive" );
33- dnsServer.start (53 , " *" , WiFi.softAPIP ());
34- server.addHandler (new CaptiveRequestHandler ()).setFilter (ON_AP_FILTER); // only when requested from AP
35- // more handlers...
36- server.begin ();
30+
31+ Serial.begin (115200 );
32+ WiFi.mode (WIFI_STA);
33+ WiFi.begin (ssid, password);
34+ if (WiFi.waitForConnectResult () != WL_CONNECTED) {
35+ Serial.printf (" WiFi Failed!\n " );
36+ return ;
37+ }
38+
39+ Serial.print (" IP Address: " );
40+ Serial.println (WiFi.localIP ());
41+
42+ server.on (" /" , HTTP_GET, [](AsyncWebServerRequest *request){
43+ request->send (200 , " text/plain" , " Hello, world" );
44+ });
45+
46+ // Send a GET request to <IP>/get?message=<message>
47+ server.on (" /get" , HTTP_GET, [] (AsyncWebServerRequest *request) {
48+ String message;
49+ if (request->hasParam (PARAM_MESSAGE)) {
50+ message = request->getParam (PARAM_MESSAGE)->value ();
51+ } else {
52+ message = " No message sent" ;
53+ }
54+ request->send (200 , " text/plain" , " Hello, GET: " + message);
55+ });
56+
57+ // Send a POST request to <IP>/post with a form field message set to <message>
58+ server.on (" /post" , HTTP_POST, [](AsyncWebServerRequest *request){
59+ String message;
60+ if (request->hasParam (PARAM_MESSAGE, true )) {
61+ message = request->getParam (PARAM_MESSAGE, true )->value ();
62+ } else {
63+ message = " No message sent" ;
64+ }
65+ request->send (200 , " text/plain" , " Hello, POST: " + message);
66+ });
67+
68+ server.onNotFound (notFound);
69+
70+ server.begin ();
3771}
3872
3973void loop () {
40- dnsServer.processNextRequest ();
4174}
0 commit comments