gpt4 book ai didi

java - 当数据存在时,http 响应使用分块编码

转载 作者:可可西里 更新时间:2023-11-01 16:34:17 25 4
gpt4 key购买 nike

我有一个 web 服务,当被调用时,它可能会或可能不会发送一个正文和响应。出于某种原因,只要没有数据,就会出现 Content-Length header ,但是当我发回正文时,会出现 Transfer-Encoding: Chunked header 而不是 Content-Length header 。发送的请求实际上是分块的,但我不一定需要响应,因为我们希望负载尽可能小。

如以下代码所示,我尝试在发回数据时强制设置内容长度,但即便如此,响应仍然没有 Content-Length header 。我读过 Transfer-Encoding: Chunked header 的存在将覆盖任何 CONtent-Length header ,但我无法弄清楚如何删除 Transfer-Encoding header ,甚至不知道为什么它首先存在。

这是我对新请求的回调:

@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {

resp.setStatus(200);

String mac = req.getHeader("x-kcid");
String cmd = getCache(mac);

if (cmd != null) {
writeToStream(resp, cmd, "text/plain");
clearCache(mac);
}
}

这里是实际写入响应的方法:

private static void writeToStream(HttpServletResponse resp, String msg, String contentType) throws IOException {        
resp.setContentType(contentType);
resp.setContentLength(msg.getBytes().length);
resp.getWriter().write(msg);
}

最佳答案

GAE doesn't allow设置 Transfer-EncodingContent-Length header 。(该 header 和其他一些 header 被忽略并从响应中删除)。

关于java - 当数据存在时,http 响应使用分块编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15487081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com