androidwebserverembeddedwebserver

webserver for file upload on android


I would like to add a webserver to my android application for uploading small files to the phone.

The user would start the webserver from the phone by hitting a button. He would then see an ip address that can be accessed by any browser from a pc. The website behind this ip address should show a file upload opportunity.

My question is: Is there an open source project similar to my needs? Or how would you recommend doing this?


Solution

  • you can use NanoHttpd link it's very weight android web server that is nicely embbedible..

    package .....;
    
    import java.io.IOException;
    import java.util.Map.Entry;
    import java.util.Properties;
    
    import android.app.Activity;
    import android.net.wifi.WifiManager;
    import android.os.Bundle;
    import android.os.Handler;
    import android.widget.TextView;
    
    public class AndroidWebServerActivity extends Activity {
    private static final int PORT = 8765;
    private TextView hello;
    private MyHTTPD server;
    private Handler handler = new Handler();
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    }
    
    @Override
    protected void onResume() {
    super.onResume();
    
    try {
    server = new MyHTTPD();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    
    @Override
    protected void onPause() {
    super.onPause();
    if (server != null)
    server.stop();
    }
    
    private class MyHTTPD extends NanoHTTPD {
    public MyHTTPD() throws IOException {
    super(PORT, null);
    }
    
    @Override
    public Response serve(String uri, String method, Properties header, Properties parms, Properties files) {
    final StringBuilder buf = new StringBuilder();
    for (Entry<Object, Object> kv : header.entrySet())
    buf.append(kv.getKey() + " : " + kv.getValue() + "\n");
    handler.post(new Runnable() {
    @Override
    public void run() {
    
    }
    });
    
    final String html = "<html><head><head><body><h1>Hello, World</h1></body></html>";
    return new NanoHTTPD.Response(HTTP_OK, MIME_HTML, html);
    }
    }
    }