NanoHTTPD 是一个轻量级的 Java HTTP 服务器,用于 Android 和其他 Java 应用程序
- 导入所需的库:
import java.io.IOException; import java.io.OutputStream; import java.net.InetSocketAddress; import org.nanohttpd.core.Server; import org.nanohttpd.http.HttpResponseStatus; import org.nanohttpd.http.HttpHandler; import org.nanohttpd.http.HttpRequest;
- 创建一个继承自
HttpHandler
的类,用于处理特定的请求:
public class MyRequestHandler implements HttpHandler { @Override public HttpResponseStatus handle(HttpRequest request, OutputStream outputStream) throws IOException { // 处理请求的逻辑 String response = "Hello from MyRequestHandler!"; outputStream.write(response.getBytes()); return HttpResponseStatus.OK; } }
- 创建一个继承自
Server
的类,用于启动服务器并设置端口和处理请求的处理器:
public class MyServer extends Server { public MyServer(int port) { super(new InetSocketAddress(port)); add(new MyRequestHandler(), "/my-path"); } }
- 在
main
方法中启动服务器:
public static void main(String[] args) { int port = 8080; // 选择一个可用的端口号 MyServer server = new MyServer(port); System.out.println("Starting server on port " + port); try { server.start(); } catch (IOException e) { System.err.println("Failed to start server"); e.printStackTrace(); } }
在这个示例中,我们创建了一个简单的 HTTP 服务器,监听 8080 端口。当用户访问 /my-path
时,将调用 MyRequestHandler
类处理请求。这个类实现了 HttpHandler
接口,并在 handle
方法中定义了处理请求的逻辑。
NanoHTTPD 使用 Java 内置的线程池来处理并发请求。当你启动服务器时,它会创建一个固定大小的线程池,用于处理传入的客户端请求。这意味着,当服务器收到多个请求时,NanoHTTPD 会将它们分配给线程池中的不同线程进行处理,从而实现多线程处理。
注意:这个示例仅用于演示目的,实际应用中可能需要根据需求进行更多的错误处理和优化。