Java Netty ChannelHandler-如何在channelRead0中获取DefaultFullHttpResponse?

Java Netty ChannelHandler-如何在channelRead0中获取DefaultFullHttpResponse?,java,netty,nio,Java,Netty,Nio,我正在尝试设置请求/响应客户端ChannelHandler。此时,我能够在我的channelRead0方法中获得DefaultHttpResponse,但我不知道如何获得DefaultFullHttpResponse 我需要DefaultFullHttpResponse的原因是DefaultHttpResponse似乎不包含从服务器返回的响应正文 我的通灵者- public class NettyClientHandler extends SimpleChannelInboundHandler&

我正在尝试设置请求/响应客户端ChannelHandler。此时,我能够在我的
channelRead0
方法中获得DefaultHttpResponse,但我不知道如何获得DefaultFullHttpResponse

我需要DefaultFullHttpResponse的原因是DefaultHttpResponse似乎不包含从服务器返回的响应正文

我的通灵者-

public class NettyClientHandler extends SimpleChannelInboundHandler<DefaultHttpResponse> {

    private ChannelHandlerContext ctx;
    private BlockingQueue<Promise<DefaultHttpResponse>> messageList = new LinkedBlockingQueue<>(1_000_000);

    @Override
    public void channelActive(ChannelHandlerContext ctx) throws Exception {
        super.channelActive(ctx);
        this.ctx = ctx;
    }

    @Override
    public void channelRead0(ChannelHandlerContext ctx, DefaultHttpResponse msg) {
        synchronized (this) {
            messageList.poll().setSuccess(msg);
            System.out.println(msg);
        }
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
        cause.printStackTrace();
        ctx.close();
    }

    @Override
    public void channelReadComplete(ChannelHandlerContext ctx)
            throws Exception {
        super.channelReadComplete(ctx);
        System.out.println("channelReadComplete");

    }
}
我环顾四周,但找不到任何
FullHttpClientCodec
HttpClientCodec
中允许我这样做的选项


如何将DefaultFullHttpResponse传递给channelRead0方法?

解决了这个问题。需要在
HttpClientCodec
之后将新的HttpObjectAggregator(4096)添加到我的管道中。然后我的ChannelClientHandler类型需要从
DefaultHttpResponse
更改为
FullHttpResponse
。需要在
HttpClientCodec
之后将新的HttpObjectAggregator(4096)添加到我的管道中。然后我的ChannelClientHandler类型需要从
DefaultHttpResponse
更改为
FullHttpResponse
@Override
public void channelCreated(Channel channel) throws Exception {
    channel.pipeline().addLast(sslContext.newHandler(channel.alloc()));
    channel.pipeline().addLast(new HttpClientCodec());
    channel.pipeline().addLast(new HttpContentDecompressor());
    channel.pipeline().addLast(new NettyClientHandler());
}