Android studio开发使用NanoHTTPD实现java HTTP服务器

owofile Lv5

Android studio开发使用NanoHTTPD实现java HTTP服务器

NanoHTTPD 简介

NanoHTTPD 是一个轻量级的 Java HTTP 服务器,可以嵌入到任何 Java 应用中,包括 Android 应用。它非常适合用于开发小型 Web 服务或 API,因为它简单易用且具有较小的内存占用。NanoHTTPD 支持静态和动态内容的处理,并且可以在多种环境下运行。

NanoHTTPD 的主要特性

  • 小巧: 整个库很小,适合嵌入。
  • 简单: API 设计清晰,易于使用。
  • 支持多种 MIME 类型: 可以根据需求返回不同类型的内容(如 HTML、JSON、图片等)。
  • 灵活性: 支持自定义请求处理逻辑。

导入依赖

1
implementation("org.nanohttpd:nanohttpd:2.3.0")

如果无法使用请在构建里clean后Rebuild,然后再构建输出里检查是否开始下载依赖包

创建示例类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.example.happy\_deer;
import fi.iki.elonen.NanoHTTPD;
public class SimpleHttpServer extends NanoHTTPD {
public SimpleHttpServer(int port) {
super(port);
}
@Override
public Response serve(IHTTPSession session) {
String htmlResponse = "<html>" +
"<head><title>Welcome</title></head>" +
"<body>" +
"<h1>Hello, World!</h1>" +
"<p>This is a simple web page served from NanoHttpd!</p>" +
"</body>" +
"</html>";
return newFixedLengthResponse(Response.Status.OK, "text/html", htmlResponse);
}
}

继承包还需要重写两个方法,可以只重写上面的方法,作用是定义端口,然后在下面重写网页。

启动服务

1
private SimpleHttpServer server;

首先声明变量,一般是写在类顶部

1
2
3
server = new SimpleHttpServer(8080); // 使用8080端口
server.start();
Log.e("DevelopersActivity","Server已启动");

设定好端口后就启动成功了,通过ip:端口的方式访问,本机一般是http://localhost:8080,当然你也可以写一个方法查询当前IP然后显示出来,这样也方便之后其他局域网好友访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static String getLocalIpAddress(Context context) {
try {
// 获取 WifiManager
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI\_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
// 获取 IP 地址,返回值为 int 型,需要转换为字符串
int ipAddress = wifiInfo.getIpAddress();
return String.format("%d.%d.%d.%d",
(ipAddress & 0xff),
(ipAddress >> 8 & 0xff),
(ipAddress >> 16 & 0xff),
(ipAddress >> 24 & 0xff));
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

使用获取地址的方法

1
2
3
String localIpAddress = getLocalIpAddress(DevelopersActivity.this);
System.out.println("Local IP Address: " + localIpAddress);
logTextView.setText("Server已启动,在模拟器上通过localhost:8080访问成功,真机测试:" + localIpAddress + ":8080");

到这里已经可以简单的创建一个HTTP服务器了,由于NanoHTTPD的特性,一般用来实现一些简单的数据显示比较好,并不适合去做一个庞大的Web,小巧和轻量才是使用它的正确方式

  • Title: Android studio开发使用NanoHTTPD实现java HTTP服务器
  • Author: owofile
  • Created at : 2024-09-19 14:50:07
  • Updated at : 2025-04-11 21:18:27
  • Link: https://owofile.github.io/blog/2024/09/19/Android-studio开发使用NanoHTTPD实现java-HTTP服务器/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments