如何在android中创建nanohttpd服务器?

实际上,我搜索了一些问题然后去了 github.但我是新人,我无法理解这个例子.

我想在android中创建http服务器,所以我可以在PC浏览器中访问它.

我有一个类扩展nanohttpd实例,但服务器不起作用.我不知道为什么,我的电脑和手机都在同一个WIFI,呃……

public class MyHTTPD extends NanoHTTPD {

     /**
     * Constructs an HTTP server on given port.
     */
    public MyHTTPD()throws IOException {
        super(8080);
    }


@Override
    public Response serve( String uri,Method method,Map<String,String> header,String> parms,String> files )
    {
        System.out.println( method + " '222" + uri + "' " );
        String msg = "<html><body><h1>Hello server</h1>\n";
        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 );
    }


    public static void main( String[] args )
    {
        try
        {
            new MyHTTPD();
        }
        catch( IOException ioe )
        {
            System.err.println( "Couldn't start server:\n" + ioe );
            System.exit( -1 );
        }
        System.out.println( "Listening on port 8080. Hit Enter to stop.\n" );
        try { system.in.read(); } catch( Throwable t ) {
            System.out.println("read error");
        };
    }

}

解决方法

您的示例代码缺少一个小细节 – 您创建服务器但您从未调用“start()”方法,该方法将其启动以侦听传入连接.在你的main()方法中,你可以写
(new MyHTTPD()).start();

一切都会好的,你的服务器会以你希望的方式响应.

它以这种方式工作的原因有两个:我希望构造函数是一种廉价,廉价的操作,没有副作用.例如,在单元测试时,我在设置中调用“start()”,在我的jUnit测试的拆卸方法调用“stop()”.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...