为什么我的HTTP消息被标记为分块?

时间:2015-10-21 13:47:54

标签: java http netty chunking

我使用的是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。但是,这种检查可能不是某种错误吗?

0 个答案:

没有答案