#if defined(ARDUINO_ARCH_ESP8266) #include #include #elif defined(ARDUINO_ARCH_ESP32) #include #include #endif #include // Modify according to your Wi-Fi environment. #define SSID "wifissid" #define PSK "wifipassword" // This example shows the utility to send http response // independently in the token function. // If the sketch sends independently http response within // the token function then it must inform to the PageBuilder // about sending stop for http:200. #if defined(ARDUINO_ARCH_ESP8266) ESP8266WebServer server; #elif defined(ARDUINO_ARCH_ESP32) WebServer server; #endif String tokenFunc(PageArgument&); PageElement elm("{{RES}}", {{ "RES", tokenFunc }}); PageBuilder page("/", { elm }); // Accessing "/" will call the tokenFunc. PageElement elmHello("hello, world"); PageBuilder pageHello("/hello", { elmHello }); // The tokenFunc returns no HTML and sends redirection-code as // particular response by an owned http header. String tokenFunc(PageArgument& args) { // When accessing "/", it sends its own http response so that // it will be transferred to "/hello". server.sendHeader("Location", "/hello", true); server.sendHeader("Connection", "keep-alive"); server.send(302, "text/plain", ""); server.client().stop(); // The cancel method notifies sending stop to the PageBuilder. page.cancel(); return ""; } void setup() { delay(1000); Serial.begin(115200); Serial.println(); WiFi.mode(WIFI_STA); WiFi.begin(SSID, PSK); while (WiFi.waitForConnectResult() != WL_CONNECTED) { delay(300); } page.insert(server); pageHello.insert(server); server.begin(); Serial.println("http server:" + WiFi.localIP().toString()); } void loop() { server.handleClient(); }