【问题标题】:Unable to respond to HEAD requests in Java无法响应 Java 中的 HEAD 请求
【发布时间】: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


    【解决方案1】:

    我发现了问题 不应发送 BODY 以响应 HEAD 请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      相关资源
      最近更新 更多