我正在尝试使用netty中可用的压缩器,在通道管道中添加以下行
pipeline.addLast("gzip", new HttpContentCompressor());
我将响应标头"Content-Encoding"
设置为"gzip"
。
我的问题是如何设置内容,我尝试了以下
response.setContent(ChannelBuffers.copiedBuffer(responseText, CharsetUtil.UTF_8));
其中responseText
- >我想发送给浏览器的字符串。
我收到的错误是内容不是gzip流
org.jboss.netty.handler.codec.embedder.CodecEmbedderException: org.jboss.netty.handler.codec.compression.CompressionException: 解压缩失败(-3):不是gzip流
我应该gzip responseText
然后执行setContent(gzippedResponse)
吗?或者我在这里遗漏了什么?
答案 0 :(得分:4)
您无需将响应标头“Content-Encoding”设置为“gzip”。 Netty为您做到了。请参阅继承HttpContentEncoder
的{{1}}。
您无需gzip HttpContentCompressor
。
您的管道应如下所示:
responseText