【发布时间】:2021-12-25 22:36:00
【问题描述】:
我正在编写一个个人网络服务器。 当我向系统发送 GET 请求时,系统响应良好。 但是当我发送 HEAD 请求时,我遇到了以下问题:
sun.net.httpserver.ExchangeImpl sendResponseHeaders 警告:sendResponseHeaders:使用 HEAD 的内容长度调用 请求 java.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(HandleHttpResponse.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();
}
}
【问题讨论】:
标签: java http-headers