Simple Webserver example for wiznet W5500 (SPI Ethernet chip) mbed OS 5 - HTTP 1.1 and multi-threaded

Dependencies:   W5500Interface easy-connect mbed-http

Fork of http-webserver-example by sandbox

mbed-os-example-http-server

This application demonstrates how to run an HTTP server on an mbed OS 5 device & WIZnet W5500 Ethernet components.

Request parsing is done through [nodejs/http-parser](https://github.com/nodejs/http-parser).

To build

  1. Open ``mbed_app.json`` and change the `network-interface` option to your connectivity method ([more info](https://github.com/ARMmbed/easy-connect)).
  2. Build the project in the online compiler or using mbed CLI.
  3. Flash the project to your development board.
  4. Attach a serial monitor to your board to see the debug messages.

Tested on

But every networking stack that supports the [mbed OS 5 NetworkInterface API](https://docs.mbed.com/docs/mbed-os-api-reference/en/latest/APIs/communication/network_sockets/) should work.

Test Result

Revision:
2:c8eff436549f
Parent:
0:41f820ea137a
Child:
5:ac9aebd61a31
--- a/source/main.cpp	Mon Jul 31 17:12:21 2017 +0200
+++ b/source/main.cpp	Thu Aug 09 08:24:06 2018 +0000
@@ -3,8 +3,8 @@
 #include "http_server.h"
 #include "http_response_builder.h"
 
-Serial pc(USBTX, USBRX);
-DigitalOut led(LED1);
+//Serial pc(USBTX, USBRX);
+//DigitalOut led(D1);
 
 // Requests come in here
 void request_handler(ParsedHttpRequest* request, TCPSocket* socket) {
@@ -28,8 +28,7 @@
     }
     else if (request->get_method() == HTTP_POST && request->get_url() == "/toggle") {
         printf("toggle LED called\n");
-        led = !led;
-
+        //led = !led;
         HttpResponseBuilder builder(200);
         builder.send(socket, NULL, 0);
     }
@@ -40,15 +39,17 @@
 }
 
 int main() {
-    pc.baud(115200);
+//    pc.baud(115200);
 
-    // Connect to the network (see mbed_app.json for the connectivity method used)
-    NetworkInterface* network = easy_connect(true);
+    printf("Easy connect...\n");
+    NetworkInterface *network = easy_connect(true);
     if (!network) {
-        printf("Cannot connect to the network, see serial output\n");
+        printf("Cannot connect to the network, see serial output");
         return 1;
     }
 
+    printf("Connected to the network. Opening a socket...\n");
+
     HttpServer server(network);
     nsapi_error_t res = server.start(8080, &request_handler);
 
@@ -60,4 +61,25 @@
     }
 
     wait(osWaitForever);
+
+/*
+    // Connect to the network (see mbed_app.json for the connectivity method used)
+    NetworkInterface* network = easy_connect(true);
+    if (!network) {
+        printf("Cannot connect to the network, see serial output\n");
+        return 1;
+    }
+    
+    HttpServer server(network);
+    nsapi_error_t res = server.start(8080, &request_handler);
+
+    if (res == NSAPI_ERROR_OK) {
+        printf("Server is listening at http://%s:8080\n", network->get_ip_address());
+    }
+    else {
+        printf("Server could not be started... %d\n", res);
+    }
+
+    wait(osWaitForever);
+*/
 }