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 會將它們分配給線程池中的不同線程進行處理,從而實現多線程處理。
注意:這個示例僅用于演示目的,實際應用中可能需要根據需求進行更多的錯誤處理和優化。