如何使用Netty deflator来压缩发送到Browser的响应

时间:2011-12-22 14:48:37

标签: java gzip netty

我正在尝试使用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)吗?或者我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:4)

  • 您无需将响应标头“Content-Encoding”设置为“gzip”。 Netty为您做到了。请参阅继承HttpContentEncoder的{​​{1}}。

  • 您无需gzip HttpContentCompressor

  • 您的管道应如下所示:

    responseText