1d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawkepackage fi.iki.elonen; 2d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke 3fa460daed161decee0d49936154d2762f6fb3702Paul Hawkeimport java.util.Map; 4d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke 5d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke/** 6d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke * An example of subclassing NanoHTTPD to make a custom HTTP server. 7d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke */ 8d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawkepublic class HelloServer extends NanoHTTPD { 9939e8d5a14f3065ebd9458517ceb91cba8276448Paul Hawke public HelloServer() { 10df674ca7f11cee6336b66271c50476f389e0ff4bPaul Hawke super(8080); 11d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke } 12d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke 13939e8d5a14f3065ebd9458517ceb91cba8276448Paul Hawke @Override public Response serve(IHTTPSession session) { 14939e8d5a14f3065ebd9458517ceb91cba8276448Paul Hawke Method method = session.getMethod(); 15939e8d5a14f3065ebd9458517ceb91cba8276448Paul Hawke String uri = session.getUri(); 16d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke System.out.println(method + " '" + uri + "' "); 17d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke 18d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke String msg = "<html><body><h1>Hello server</h1>\n"; 19939e8d5a14f3065ebd9458517ceb91cba8276448Paul Hawke Map<String, String> parms = session.getParms(); 20d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke if (parms.get("username") == null) 21d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke msg += 22d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke "<form action='?' method='get'>\n" + 23d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke " <p>Your name: <input type='text' name='username'></p>\n" + 24d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke "</form>\n"; 25d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke else 26d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke msg += "<p>Hello, " + parms.get("username") + "!</p>"; 27d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke 28d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke msg += "</body></html>\n"; 29d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke 30d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke return new NanoHTTPD.Response(msg); 31d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke } 32d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke 33939e8d5a14f3065ebd9458517ceb91cba8276448Paul Hawke 34d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke public static void main(String[] args) { 359788c5b7900b4c7ff27355f69fee4e14630eb412Paul Hawke ServerRunner.run(HelloServer.class); 36d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke } 37d22b56d68169cbf5fcf9ddfb30b54fb5f155cc40Paul Hawke} 38