我正在尝试使用 netty 中可用的压缩器,在通道管道中添加了以下行
pipeline.addLast("gzip", new HttpContentCompressor());
Run Code Online (Sandbox Code Playgroud)
我将响应标头设置"Content-Encoding"为"gzip".
我的问题是如何设置内容,我尝试了以下方法
response.setContent(ChannelBuffers.copiedBuffer(responseText, CharsetUtil.UTF_8));
Run Code Online (Sandbox Code Playgroud)
其中responseText--> 我想要发送到浏览器的字符串。
我收到一个错误,内容不是 gzip 流
org.jboss.netty.handler.codec.embedder.CodecEmbedderException:org.jboss.netty.handler.codec.compression.CompressionException:解压缩失败(-3):不是gzip流
我应该 gzipresponseText然后做一个setContent(gzippedResponse)吗?或者我在这里遗漏了什么?
您不需要将响应标头“Content-Encoding”设置为“gzip”。Netty 为你做这件事。看看是HttpContentEncoder从哪HttpContentCompressor继承的。
您不需要 gzip responseText。
你的管道应该看起来像这样:
// Create a default pipeline implementation.
ChannelPipeline pipeline = pipeline();
// Decodes ChannelBuffer into HTTP Request message
pipeline.addLast("decoder", new HttpRequestDecoder());
// Encodes HTTTPRequest message to ChannelBuffer
pipeline.addLast("encoder", new HttpResponseEncoder());
// Compress
pipeline.addLast("deflater", new HttpContentCompressor(1));
// Handler to dispatch processing to our services
pipeline.addLast("handler", new YourHttpRequestHandler());
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
7265 次 |
| 最近记录: |