问题描述
我尝试使用nanoHTTP从我的Android应用程序运行服务器。 我的目的是使与该应用程序连接到同一网络的每个人都可以访问html网页。
到目前为止,这是我的NanoHttp服务器类:
private class MyHTTPD extends NanoHTTPD {
public MyHTTPD() throws IOException {
super(8080);
}
@Override
public Response serve(IHTTPSession session) {
String msg = "<html><body><h1>Hello server</h1></body></html>\n";
return newFixedLengthResponse(msg);
}
从主要活动启动服务器后,当我在浏览器中打开ip:port时,可以看到文本“ Hello server” 。
现在我的问题是,如何从主要活动中更改html代码。 我曾考虑过通过IHTTPSession会话将html代码传递给serve()方法,但是我不知道该怎么做以及session的哪个参数。
所以我的问题是,如何更新我的nanoHTTP服务器的响应,或者如何从主要活动中调用serve()方法?
1楼
您无法从活动中手动调用serve()方法。
每当客户端请求到来时,serve()方法都会执行。 您可以实现的一种方法是,创建一个参数化的构造函数,该构造函数在MyHTTPD中接受String数据,然后使用该构造函数创建对象。 创建对象时传递HTML数据。 现在,为每个请求提供该数据。
例如:
private class MyHTTPD extends NanoHTTPD {
private String htmlData;
public MyHTTPD() throws IOException {
super(8080);
}
public MyHTTPD(String data) throws IOException {
this();
htmlData = data;
}
@Override
public Response serve(IHTTPSession session) {
// String msg = "<html><body><h1>Hello server</h1></body></html>\n";
return newFixedLengthResponse(htmlData);
}