Я пытаюсь настроить клиент запроса / ответа ChannelHandler. На данный момент я могу получить DefaultHttpResponse в моем методе channelRead0
, но я не знаю, как получить DefaultFullHttpResponse.
Причина, по которой мне нужен DefaultFullHttpResponse, заключается в том, что DefaultHttpResponse, по-видимому, не содержит тела ответа, возвращенного с сервера.
My ChannelHander-
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");
}
}
А как настроен конвейер канала в ChannelPoolHandler-
@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());
}
Я оглянулся, но не смог найти FullHttpClientCodec
или опции в HttpClientCodec
, которые позволили бы мне сделать это.
Как я могу получить DefaultFullHttpResponse для передачи в метод channelRead0?