Java 收到请求后关闭 http 服务器
Java shutdown http server after receiving request
我在 java 中设置了一个简单的 http 服务器,它只处理一种类型的 post 请求。
服务器代码:
int port = 5555;
HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);
System.out.println("server started at " + port);
server.createContext("/echoPost", new echoPost());
server.setExecutor(null);
server.start();
echoPost() class:
public class echoPost implements HttpHandler {
@Override
public void handle(HttpExchange http) throws IOException {
InputStreamReader inputStreamReader = new InputStreamReader(http.getRequestBody(), "utf-8");
BufferedReader bufferReader = new BufferedReader(inputStreamReader);
String incoming = br.readLine();
System.out.println(incoming);
String response = "response";
http.sendResponseHeaders(200, response.length());
OutputStream outputStream = http.getResponseBody();
os.write(response.toString().getBytes());
os.close();
}
}
我希望服务器在收到 post 请求后停止。有没有办法在处理完一个 post 请求后服务器停止时直接执行此操作?
使用
System.exit(0);
不管这行代码在哪里执行,都会终止JVM并退出。
调用 server.stop(delay)
有什么问题,延迟足够小(0 或 1)?您需要将 server
作为参数传递给 echoPost
构造函数。
我在 java 中设置了一个简单的 http 服务器,它只处理一种类型的 post 请求。
服务器代码:
int port = 5555;
HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);
System.out.println("server started at " + port);
server.createContext("/echoPost", new echoPost());
server.setExecutor(null);
server.start();
echoPost() class:
public class echoPost implements HttpHandler {
@Override
public void handle(HttpExchange http) throws IOException {
InputStreamReader inputStreamReader = new InputStreamReader(http.getRequestBody(), "utf-8");
BufferedReader bufferReader = new BufferedReader(inputStreamReader);
String incoming = br.readLine();
System.out.println(incoming);
String response = "response";
http.sendResponseHeaders(200, response.length());
OutputStream outputStream = http.getResponseBody();
os.write(response.toString().getBytes());
os.close();
}
}
我希望服务器在收到 post 请求后停止。有没有办法在处理完一个 post 请求后服务器停止时直接执行此操作?
使用
System.exit(0);
不管这行代码在哪里执行,都会终止JVM并退出。
调用 server.stop(delay)
有什么问题,延迟足够小(0 或 1)?您需要将 server
作为参数传递给 echoPost
构造函数。