0

我的应用中需要 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 次启动如何导致服务器启动(我当时没有什么不同)。

我做错了什么?

4

1 回答 1

1

NanoHttpd 希望您覆盖“serve()”方法。您从覆盖的方法返回的响应对象将返回到访问您的服务器的 Web 浏览器。github 站点上的“README”文档有一个功能齐全的示例 ( https://github.com/NanoHttpd/nanohttpd ),它将调试信息返回给浏览器。

如果您想提供更多有趣的内容,请查看 NanoHttpd 项目中的 samples/ 文件夹,或 webserver/ 文件夹以获得功能齐全的 Web 服务器。

于 2013-12-13T02:09:03.383 回答