使用NanoHTTPD在Android上建立本地服务器

NanoHttpd是一个开源库,使用Java实现,可以在非常方便地集成到Android应用中去,实现了一个轻量级的 Web Server。

项目地址:
https://github.com/NanoHttpd/nanohttpd

使用方法:在下面下载链接中下载nanohttpd-2.2.0.jar导入到Android项目中的libs目录下。

https://github.com/NanoHttpd/nanohttpd/releases

下面就可以在客户端创建一个Server

public class MyServer extends NanoHTTPD {

    public MyServer(int port) {
        super(port);
    }

    @Override
    public Response serve(IHTTPSession session) {
        StringBuilder builder = new StringBuilder();
        builder.append("<!DOCTYPE html><html><body>");
        builder.append("Sorry, Can't Found the page!");
        builder.append("</body></html>\n");
        return newFixedLengthResponse(builder.toString());
    }
}

下面就是启动这个Server,我们可以放在Service中启动

public class MyService extends Service {
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        MyServer myServer = new MyServer(8080);
        try {
            myServer.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return super.onStartCommand(intent, flags, startId);
    }
}

后面我们启动这个Service之后,Server就启动了,下面我们直接在手机的浏览器中输入127.0.0.1:8080,就可以向这个本地的Server发送请求。

注意,使用NanoHTTPD需要添加网络权限。

 <uses-permission android:name="android.permission.INTERNET"/>

欢迎关注微信公众号:DroidMind
精品内容独家发布平台


呈现与博客不一样的技术干货

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Android上运行本地HTML,可以使用NanoHttpd作为简单的HTTP服务器NanoHttpd是一个非常轻量级的HTTP服务器库,可以在Android应用程序中嵌入使用。 首先,您需要在Android项目的依赖配置文件中添加NanoHttpd库的依赖项。可以通过在build.gradle文件中的dependencies块中添加以下行来完成此操作: ``` implementation 'org.nanohttpd:nanohttpd:2.3.1' ``` 接下来,您需要创建一个继承自NanoHttpd的自定义服务器类。您可以在这个类中实现您自己的逻辑来处理HTTP请求。以下是一个简单的示例: ```java import fi.iki.elonen.NanoHTTPD; public class MyServer extends NanoHTTPD { public MyServer(int port) { super(port); } @Override public Response serve(IHTTPSession session) { // 处理HTTP请求的逻辑 return newFixedLengthResponse("Hello, world!"); } public static void main(String[] args) { MyServer server = new MyServer(8080); try { server.start(NanoHTTPD.SOCKET_READ_TIMEOUT, false); } catch (IOException e) { e.printStackTrace(); } } } ``` 在上面的示例中,我们创建了一个简单的服务器类,该类重写了serve方法来处理HTTP请求,并在浏览器中返回一个简单的响应。您可以根据自己的需求来修改和完善这个方法。 最后,您可以在Android应用程序的适当位置启动您的服务器。例如,在您的MainActivity的onCreate方法中,添加以下行: ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MyServer server = new MyServer(8080); try { server.start(NanoHTTPD.SOCKET_READ_TIMEOUT, false); } catch (IOException e) { e.printStackTrace(); } } ``` 通过运行这个服务器,您可以在本地浏览器中通过访问http://localhost:8080来加载和浏览您在serve方法中返回的响应。请注意,如果您的设备上有任何其他服务正在监听相同的端口,您可能需要使用不同的端口号。 希望以上内容能帮助您在Android上成功运行本地HTML文件。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值