无法在Java中响应HEAD请求



我正在编写一个个人web服务器。当我向系统发送GET请求时,系统响应良好。但是当我发送HEAD请求时,我会遇到以下问题:

sun.net.httpserver.ExchangeImpl sendResponseHeaders警告:sendResponseHeaders:使用HEAD的内容长度调用requestjava.io.IOException:尚未在发送响应标头jdk.httpserver/sun.net.httpserver.PlaceholderOutputStream.checkWrap(ExchangeImpl.java:448(在jdk.httpserver/sun.net.httpserver.PlaceholderOutputStream.write(ExchangeImpl.java:458(在ir.utux.service.HandleHttpResponse.writeResponse(HandleHttpRespons.java:32(

这是我为管理响应、简化HEAD和GET而编写的代码。

public void writeResponse(SettingModal settingModal) {
try {
switch (requestHeader.getMethod()) {
case HEAD,GET -> {
response.getResponseHeaders().set("Server", "utux HttpServer");
response.getResponseHeaders().set("Connection", "close");
response.getResponseHeaders().set("Transfer-encoding", "chunked");
response.getResponseHeaders().set("Content-Type", ContentType.HTML);
response.sendResponseHeaders(HttpStatus.SC_OK, "".length());
response.getResponseBody().write("".getBytes(StandardCharsets.UTF_8));
response.getResponseBody().flush();
response.getResponseBody().close();
}
}
} catch (IOException e) {
e.printStackTrace();
}
}

我发现了问题BODY不应作为对HEAD请求的响应而发送。

最新更新