Используется клиент Apollo с клиентом okHttpClient.
Библиотека Apollo обрабатывает ответ на запрос с помощью okhttpClient.Мое приложение ничего не делает с запросом и ответом OKHttpClient.
Создан клиент Apollo, используя следующий код:
OkHttpClient okHttpClient = new OkHttpClient
.Builder()
.connectTimeout(queryTimeout, TimeUnit.SECONDS)
.readTimeout(queryTimeout, TimeUnit.SECONDS)
.writeTimeout(queryTimeout, TimeUnit.SECONDS)
.addInterceptor(chain -> {
Request request = chain.request().newBuilder()
.header("Authorization", getAuthorizationValue())
.build();
return chain.proceed(request);
})
.build();
return new ApolloClient(com.apollographql.apollo.ApolloClient.builder()
.serverUrl(graphqlEndPoint)
.okHttpClient(okHttpClient)
.build());
Приложение, выдающее предупреждение
2019-04-10 05:59:19.421 WARN 52654 --- [OkHttp ConnectionPool] okhttp3.OkHttpClient : A connection to http://127.0.0.1/ was leaked. Did you forget to close a response body?
Ниже вопросы не работалидля меня:
OkHttp: избежать предупреждения об утечке соединения
OkHttp: утечка соединения с http://example.com/.Вы забыли закрыть тело ответа?
Использование клиентского запроса Apollo (по запросу):
this.client.query(query).enqueue(callback);
Реализация обратного вызова:
@Slf4j
public class SyncableCallback<T> extends ApolloCall.Callback<T> {
private CompletableFuture<T> completableFuture = new CompletableFuture<>();
@Override
public void onResponse(@Nonnull Response<T> response) {
log.debug("Response received: {}", response.data());
completableFuture.complete(response.data());
}
@Override
public void onFailure(@Nonnull ApolloException e) {
completableFuture.completeExceptionally(e);
}
public T getResult() throws ClientException {
try {
return completableFuture.get();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
throw new ClientException(e);
} catch (ExecutionException e) {
throw new ClientException(e);
}
}
}