【发布时间】:2019-02-06 11:03:32
【问题描述】:
在 Netty 中,我通过在 body 中输入字符串来创建响应:
DefaultFullHttpResponse res = new DefaultFullHttpResponse(HTTP_1_1, httpResponse.getHttpResponseStatus());
if (body != null) {
ByteBuf buf = Unpooled.copiedBuffer(body, CharsetUtil.UTF_8);
res.content().writeBytes(buf);
buf.release();
res.headers().set(HttpHeaderNames.CONTENT_LENGTH, res.content().readableBytes());
}
当我查看响应时,我看到content-length 是字符串中字符长度的两倍。我知道 Java 字符串每个字符包含 2 个字节,但我不知道在返回请求时如何在 Netty 中防止这种情况发生。
当我查看 Cloudflare 响应时,这些响应包含每个字符一个字节。所以必须有办法改变这一点。想法?
【问题讨论】:
-
res.content().clear(); res.content().writeBytes(buf);也许内容包含两倍的数据。
标签: java http encoding character-encoding netty