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 HttpContents. 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 HttpContents 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.CumulatorChannelHandler.SharablevalidateHeadersCOMPOSITE_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, userEventTriggeredactualReadableBytes, callDecode, channelInactive, channelRead, channelReadComplete, discardSomeReadBytes, handlerRemoved, handlerRemoved0, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecodechannelActive, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaughtensureNotSharable, handlerAdded, isSharableclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waithandlerAddedpublic 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.