Я пытаюсь использовать AsyncHttpClient для создания асинхронных и синхронных запросов, но я получаю сообщение об ошибке как для типов запросов, так и для GET, POST и PUT.Мне не повезло, что он ищет решения.Я попытался вернуться к предыдущим версиям AsyncHttpClient, и у меня возникла та же проблема.
Кто-нибудь смог устранить эту ошибку?
Может ли это быть вызвано конечной точкой REST API, которую я вызываю?(Я так не думаю, потому что, если я использую HttpClient для синхронных запросов, тогда это работает.)
Есть ли лучший способ выполнять асинхронные http-запросы в Java?
Пожалуйста, укажите меня вправильное направление.Если вам нужно больше деталей, пожалуйста, дайте мне знать.Заранее спасибо!
Это упрощенная версия кода:
AsyncHttpClient asyncClient = asyncHttpClient();
//calling get() at the end should make it synchronous.
Response response = asyncClient.prepareGet(uri.toString())
.setHeader(HttpHeaders.ACCEPT, ContentType.APPLICATION_JSON)
.setHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON)
.setHeader(HttpHeaders.AUTHORIZATION, authToken)
.execute()
.get();//Fails here.
Сбой при следующей ошибке:
java.util.concurrent.ExecutionException: io.netty.handler.codec.compression.DecompressionException: вход не в формате GZIP в java.util.concurrent.CompletableFuture.reportGet (CompletableFuture.java:357) в java.util.concurrent.CompletableFuture.get (CompletableFuture.java:1895) в org.asynchttpclient.netty.NettyResponseFuture.get (NettyResponseFuture.java:201) в AvisionAPI.lib.ApiHelper.doRequest (ApiHelper.liAP.ApiHelper.doRequest (ApiHelper.java:82) в AvisionAPI.lib.ApiHelper.doRequest (ApiHelper.java:78) в AvisionAPI.lib.FlightProjectService.FlightPlansGet (FlightProjectService.java:est)..java: 19) в AvisionAPI.Test.TestHelper.DoTest (TestHelper.java:14) в Main.main (Main.java:5)
Причина: io.netty.handler.codec.compression.DeCompressionException: ввод не в формате GZIP в io.netty.handler.codec.compression.JdkZlibDecoder.readGZIPHeader (JdkZlibDecoder.java:260) в io.netty.handler.codec.compression.JdkZlibDecoder.decode:16dk: Jdk) по адресу io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection (ByteToMessageDecoder.java:502) по адресу io.netty.handler.codec.ByteToMessageDecoder.callDecode (ByteToMessageDeco.ede.oe.dee.der.ededer.ededer.ededer.ededer.ededer.ededer.ededer.ededer.ededer.ededer.ededer.edecochannelRead (ByteToMessageDecoder.java:278) в и более ...
pom.xml:
<!--https://github.com/AsyncHttpClient/async-http-client-->
<dependency>
<groupId>org.asynchttpclient</groupId>
<artifactId>async-http-client</artifactId>
<version>2.10.0</version>
</dependency>
Некоторые из связанных импортов в моем классе:
import org.apache.http.*;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.asynchttpclient.*;
import static org.asynchttpclient.Dsl.*;
import org.asynchttpclient.request.body.multipart.InputStreamPart;
import org.asynchttpclient.request.body.multipart.Part;
Обновление: Я закончил тем, что изменил проект с Java 8 на 11, чтобы я мог использовать новейший java.net.http.HttpClient вместо orgasyncHttpClient иэто работает.