OkHttp Отменить запрос, если клиент не отвечает в течение определенного времени

Я использую клиент OkHttp в своем Java-приложении и вызываю одного из своих клиентов, но по какой-то причине это создает узкое место, потому что обслуживание клиента медленное, и мои запросы ставятся в очередь. Так есть ли способ отменить запрос, если клиент не отвечает в течение определенного времени?


person Agnibha    schedule 08.10.2018    source источник


Ответы (1)


Вы можете создать построитель клиента OkHttp, установив значения времени ожидания примерно так, как показано ниже.

     final OkHttpClient.Builder clientBuilder = 
     getHttpClientBuilder(RetrofitLogger.Level.BODY);
     Retrofit.Builder builder = new Retrofit.Builder();
     builder.baseUrl(<BASE URL>);
     builder.client(clientBuilder.build());



     public Builder getHttpClientBuilder() {
        final Builder builder = new Builder();
          if (shortTimeout) {
            builder.readTimeout(SHORT_TIMEOUT, TimeUnit.SECONDS);
            builder.connectTimeout(SHORT_TIMEOUT, TimeUnit.SECONDS);
             builder.retryOnConnectionFailure(false);
           }
        else {
          builder.readTimeout(READ_TIMEOUT, TimeUnit.SECONDS);
           builder.connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS);
        }
        builder.connectionPool(new ConnectionPool(IDLE_CONNECTIONS, IDLE_TIMEOUT, 
        TimeUnit.SECONDS));
        return builder;
      }
person Ramesh Yankati    schedule 08.10.2018
comment
Это время ожидания соединения. Но в моем случае вызов занимает время, т.е. клиентский метод, который я вызываю, требует времени для выполнения, а не для соединения. Я пробовал это, хотя. Спасибо за Ваш ответ. - person Agnibha; 09.10.2018