Я использую клиент OkHttp в своем Java-приложении и вызываю одного из своих клиентов, но по какой-то причине это создает узкое место, потому что обслуживание клиента медленное, и мои запросы ставятся в очередь. Так есть ли способ отменить запрос, если клиент не отвечает в течение определенного времени?
OkHttp Отменить запрос, если клиент не отвечает в течение определенного времени
Ответы (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
Это время ожидания соединения. Но в моем случае вызов занимает время, т.е. клиентский метод, который я вызываю, требует времени для выполнения, а не для соединения. Я пробовал это, хотя. Спасибо за Ваш ответ.
- person Agnibha; 09.10.2018