我的app中需要httpd服务器,所以我选择了NanoHttpd。
我已经将自己的服务器子类化了:
public class StreamingServer extends NanoHTTPD {
private Context mContext;
public StreamingServer(Context context) {
super(8080);
mContext = context;
Log.i("MyServer", "Streaming server created");
}
我正在尝试在主要活动中启动我的服务器:
// onCreate:
server = new StreamingServer(getApplicationContext());
这是我的onResume方法:
// onResume:
super.onResume();
try {
server.start();
} catch (IOException e) {
Log.i(TAG, "exception!");
e.printStackTrace();
}
Log.i(TAG, "started!");
和onPause:
super.onPause();
if (server != null) {
server.stop();
Log.i(TAG, "stopped!");
}
我也做了正确的设置:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
所以我相信我已经做好了一切。但启动我的应用程序什么都没有(页面不可用)。一些如何2或3次启动导致服务器启动(当时我没有任何不同)。
我做错了什么?
答案 0 :(得分:1)
NanoHttpd希望您覆盖“serve()”方法。从重写方法返回的响应对象将返回到命中您服务器的Web浏览器。 github站点上的“README”文档有一个功能齐全的示例(https://github.com/NanoHttpd/nanohttpd),它将调试信息返回给浏览器。
如果您想提供更有趣的内容,请查看NanoHttpd项目中的samples /文件夹,或者查看功能齐全的Web服务器的webserver /文件夹。