我想在 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/