java .lang.AbstractMethodError: io.netty.handler.code c .http.DefaultFullHttpRequest.touch (Ljava / lang / Object;) Lio / netty / util / ReferenceCounting - PullRequest
0 голосов
/ 09 апреля 2020

Я новичок в мире Java и пытаюсь отправить запрос Https. Когда я пытаюсь отправить запрос через канал, я получаю следующую ошибку

java.lang.AbstractMethodError:io.netty.handler.codec.http.DefaultFullHttpRequest.touch(Ljava/lang/Object;)Lio/netty/util/ReferenceCounted

Вот мой код конвейера

if (sslCtx != null) {
                         ch.pipeline().addLast(sslCtx.newHandler(ch.alloc()));
                     }

                     ch.pipeline().addLast(new HttpClientCodec());

                     ch.pipeline().addLast(new HttpContentDecompressor());

                     ch.pipeline().addLast(new HttpObjectAggregator(1048576));
                     ch.pipeline().addLast("encoder", new HttpRequestEncoder());
                     ch.pipeline().addLast(new ClientHandler());

Вот мой bootstrap код

ChannelFuture f = b.connect(host, port).sync(); 

             ByteBuf bbuf = Unpooled.copiedBuffer(message, StandardCharsets.UTF_8);

             FullHttpRequest request = new DefaultFullHttpRequest(
                     HttpVersion.HTTP_1_1, HttpMethod.POST, uri,bbuf,Boolean.FALSE);
             request.headers().set(HttpHeaders.Names.HOST, host);
             request.headers().set(HttpHeaders.Names.CONNECTION, HttpHeaders.Values.KEEP_ALIVE);
             request.headers().set(HttpHeaders.Names.CONTENT_LENGTH, bbuf.readableBytes());
             ((DefaultFullHttpRequest) request).content().clear().writeBytes(bbuf);

             f.channel().writeAndFlush(request);

Stacktrace:

Exception in thread "main" java.lang.AbstractMethodError: io.netty.handler.codec.http.DefaultFullHttpRequest.touch(Ljava/lang/Object;)Lio/netty/util/ReferenceCounted;
    at io.netty.util.ReferenceCountUtil.touch(ReferenceCountUtil.java:73)
    at io.netty.channel.DefaultChannelPipeline.touch(DefaultChannelPipeline.java:107)
    at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:821)
    at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:805)
    at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:842)
    at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1032)
    at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:296

Контекст: попытка отправить HTTPS-запрос

Что я делаю не так?

1 Ответ

0 голосов
/ 12 апреля 2020

Это наиболее вероятно, потому что у вас есть несколько версий зависимостей Netty 4.x в вашем пути к классам. Просто убедитесь, что у вас есть только последняя версия пути к классам, и она должна работать

...