java - 如何在android应用程序中添加http服务器并从移动浏览器访问

标签 java android apache nanohttpd

我想在 Android 应用程序中添加一个 http 服务器。我尝试过从 https://github.com/NanoHttpd/nanohttpd 获取的 NanoHTTPD 服务器。所以我可以在我的桌面上将这个http服务器作为简单的java类运行。并能够从桌面浏览器访问它。

现在我想使用 Android 应用程序添加此代码,并在 Android 设备内启动此服务器并从我的移动设备浏览器访问它。这是可能的,并且是否有任何其他服务器可以与我的 Android 应用程序绑定(bind)。

最佳答案

这是我的工作示例代码。它有限制,因为 Activity 将从内存中删除,我的服务器将停止。为了删除它,我将为该任务编写一个服务。

public class MainActivity extends Activity {
     private static final int PORT = 8080;

      private MyHTTPD server;


      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       }

      @Override
      protected void onResume() {
        super.onResume();
            server = new MyHTTPD();
        try {
            server.start();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
      }

      @Override
      protected void onPause() {
        super.onPause();

      }
      @Override
      protected void onDestroy() {
        super.onDestroy();
        if (server != null)
          server.stop();
      }

      private class MyHTTPD extends NanoHTTPD {
          public MyHTTPD() {
                super(8080);
            }

            @Override public Response serve(IHTTPSession session) {
                Method method = session.getMethod();
                String uri = session.getUri();
                System.out.println(method + " '" + uri + "' ");

                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" +
                                    "  <p>Your name: <input type='text' name='username'></p>\n" +
                                    "</form>\n";
                else
                    msg += "<p>Hello, " + parms.get("username") + "!</p>";

                msg += "</body></html>\n";

                return new NanoHTTPD.Response(msg);
            }
      }

}

//now access web page using http://127.0.0.1:8080

关于java - 如何在android应用程序中添加http服务器并从移动浏览器访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21254051/

相关文章:

java - 对 ie9 友好的简单图像/div slider ?

java - 使用spring存储过程调用oracle存储过程

javascript - 使用本地服务器流式传输图像

apache - 为什么 hdfs 在 Hadoop 集群中抛出 LeaseExpiredException (AWS EMR)

php - UTF-8贯穿始终

java - 如何通过批处理脚本下载JRE包

java - Java Swing 中上下文相关的键盘绑定(bind)

android - 隐藏小屏幕的操作栏

java - 如何使用 View 持有者模式制作自定义适配器?

Android - 强制全屏软键盘