public class HttpResponseDecoder extends HttpObjectDecoder
ByteBuf
s转换HttpResponse
个 S和HttpContent
秒。
maxInitialLineLength
The maximum length of the initial line (e.g. "HTTP/1.0 200 OK"
) If the length of the initial line exceeds this value, a TooLongFrameException
will be raised. maxHeaderSize
The maximum length of all headers. If the sum of the length of each header exceeds this value, a TooLongFrameException
will be raised. maxChunkSize
The maximum length of the content or each chunk. If the content length exceeds this value, the transfer encoding of the decoded response will be converted to 'chunked' and the content will be split into multiple HttpContent
s. If the transfer encoding of the HTTP response is 'chunked' already, each chunk will be split into smaller chunks if the length of the chunk exceeds this value. If you prefer not to handle HttpContent
s in your handler, insert HttpObjectAggregator
after this decoder in the ChannelPipeline
.
与其他HTTP请求不同,即使有Content-Length标头, HEAD请求的成功响应也没有任何内容。 因为HttpResponseDecoder
无法确定当前正在解码的响应是否与HEAD请求相关联,所以您必须覆盖HttpObjectDecoder.isContentAlwaysEmpty(HttpMessage)
以返回HEAD请求的响应true 。
如果您正在编写发出HEAD请求的HTTP客户端,请使用HttpClientCodec
而不是此解码器。 它将执行额外的状态管理来正确处理HEAD请求的响应。
您还需要执行额外的状态管理来正确处理CONNECT请求的响应,就像您为HEAD所做的那样 。 一个区别是解码器在解码成功的200响应之后应该完全停止解码,因为该连接不再是HTTP连接。
HttpClientCodec
也可以正确处理此边界情况,因此如果您正在编写发出CONNECT请求的HTTP客户端,则必须使用HttpClientCodec
。
ByteToMessageDecoder.Cumulator
ChannelHandler.Sharable
validateHeaders
COMPOSITE_CUMULATOR, MERGE_CUMULATOR
Constructor and Description |
---|
HttpResponseDecoder()
使用默认的一个新的实例
maxInitialLineLength (4096) ,
maxHeaderSize (8192) 和
maxChunkSize (8192) 。
|
HttpResponseDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize)
用指定的参数创建一个新的实例。
|
HttpResponseDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders) |
HttpResponseDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders, int initialBufferSize) |
Modifier and Type | Method and Description |
---|---|
protected HttpMessage |
createInvalidMessage() |
protected HttpMessage |
createMessage(java.lang.String[] initialLine) |
protected boolean |
isDecodingRequest() |
decode, decodeLast, isContentAlwaysEmpty, isSwitchingToNonHttp1Protocol, reset, userEventTriggered
actualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode
channelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught
ensureNotSharable, handlerAdded, isSharable
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
handlerAdded
public HttpResponseDecoder()
maxInitialLineLength (4096)
,
maxHeaderSize (8192)
和
maxChunkSize (8192)
。
public HttpResponseDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize)
public HttpResponseDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders)
public HttpResponseDecoder(int maxInitialLineLength, int maxHeaderSize, int maxChunkSize, boolean validateHeaders, int initialBufferSize)
protected HttpMessage createMessage(java.lang.String[] initialLine)
createMessage
在类
HttpObjectDecoder
protected HttpMessage createInvalidMessage()
createInvalidMessage
在课程
HttpObjectDecoder
protected boolean isDecodingRequest()
isDecodingRequest
在课程
HttpObjectDecoder
Copyright © 2008–2018 The Netty Project. All rights reserved.