Skip to content

HomerWang2017/AndroidWebServer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AndroidWebServer

Android Arsenal Platform API Twitter

This is a sample project for creating an Android Web Server using the NanoHTTPD library.

Usage

  1. To make an Android Web Server add NanoHTTPD dependency in your build.gradle file:

    compile 'org.nanohttpd:nanohttpd:2.3.1'
  2. After that, you must create an Android Web Server Class this way:

    public class AndroidWebServer extends NanoHTTPD {
    
        public AndroidWebServer(int port) {
            super(port);
        }
    
        public AndroidWebServer(String hostname, int port) {
            super(hostname, port);
        }
        
        //...
    }
  3. Add serve() method in your Android Web Server Class :

    @Override
    public Response serve(IHTTPSession session) {
        String msg = "<html><body><h1>Hello server</h1>\n";
        Map<String, String> parms = session.getParms();
        if (parms.get("username") == null) {
            msg += "<form action='?' method='get'>\n";
            msg += "<p>Your name: <input type='text' name='username'></p>\n";
            msg += "</form>\n";
        } else {
            msg += "<p>Hello, " + parms.get("username") + "!</p>";
    	}
        return newFixedLengthResponse( msg + "</body></html>\n" );
    }

    serve() is a very important method beacause this is the response sent by your web server.

  4. You can now instantiate and start your server in your activity. (Full implementation here)

    AndroidWebServer androidWebServer = new AndroidWebServer(port);
    androidWebServer.start();
    androidWebServer.stop();
  5. (Updated 2018-08-10) Added HTTPS support for the web server. Included sample BKS keystore in the project. The BKS keystore was generated by Keystore Explorer with type BKS-V1. Keystore file locates at app/src/main/resources/ as a resource file. To enable HTTPS support, insert following code before androidWebServer.start(): (Full implementation here)

  AndroidWebServer androidWebServer = new AndroidWebServer(port);

  File f = new File("src/main/resources/yourKeystoreFileName");
System.setProperty("javax.net.ssl.trustStore", f.getAbsolutePath());
androidWebServer.setServerSocketFactory(new AndroidWebServer.SecureServerSocketFactory(AndroidWebServer.makeSSLSocketFactory("/" + f.getName(), "yourkeypass".toCharArray()), null));
              

  androidWebServer.start();
  ```

LICENCE
-----

**AndroidWebServer** by [Lopez Mikhael](http://mikhaellopez.com/) is licensed under a [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0).

About

Android Web Server (NanoHttpd)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Java 100.0%