我使用的是Netty 3.10.5和HttpClientCodec。某个收到的HTTP响应总是被标记为chunked,尽管它确实不是。这非常糟糕,因为响应永远不会通过以下HttpChunkAggregator,因为HttpClientCodec不会生成HTTP块。
收到的响应包含一些内容,该内容小于最大块大小。但响应没有内容长度标题。通过调试,我发现HttpMessageDecoder是一个ReplayingDecoder,它来检查分块:
case READ_VARIABLE_LENGTH_CONTENT:
if (buffer.readableBytes() > maxChunkSize || HttpHeaders.is100ContinueExpected(message)) {
// Generate HttpMessage first. HttpChunks will follow.
checkpoint(State.READ_VARIABLE_LENGTH_CONTENT_AS_CHUNKS);
message.setChunked(true);
return message;
}
break;
使用ReplayingDecoder,我的案例中使用的方法readableBytes()
返回Integer.MAX_VALUE - buf().readerIndex();
这就是为什么我的邮件被标记为chunked。但是,这种检查可能不是某种错误吗?