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

前端之家收集整理的这篇文章主要介绍了如何在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()”.

原文链接:https://www.f2er.com/android/310328.html

猜你在找的Android相关文章