OkHttp Отменить запрос, если клиент не отвечает в течение определенного времени - PullRequest
0 голосов
/ 08 октября 2018

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

1 Ответ

0 голосов
/ 08 октября 2018

Вы можете создать значения тайм-аута настройки клиента 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;
      }
...