Как установить тайм-аут в Retrofit-2.0 + android
Я назвал эту ссылку, но я не могу реализовать для себя
Я использую
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
Я использую приведенный ниже код, как установить таймаут для этого!
public class ApiClient {
public static final String BASE_URL = Constants.BaseURL;
private static Retrofit retrofit = null;
public static Retrofit getClient() {
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
Ответы
Ответ 1
Настройте OkHttpClient для параметра таймаута. Затем используйте это как клиент для Retrofit.Builder
.
final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(20, TimeUnit.SECONDS)
.writeTimeout(20, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
Используйте этот okHttpClient
для Retrofit # Builder
Retrofit.Builder()
.client(okHttpClient);
Официальная документация OkHttp о тайм-ауте здесь
Ответ 2
попробуйте под кодом, sét timeout
составляет 20 секунд, а readTimeout
- 30 секунд
private OkHttpClient getRequestHeader() {
OkHttpClient httpClient = new OkHttpClient();
httpClient.setConnectTimeout(20, TimeUnit.SECONDS);
httpClient.setReadTimeout(30, TimeUnit.SECONDS);
return httpClient;
}
Тогда
public class ApiClient {
public static final String BASE_URL = Constants.BaseURL;
private static Retrofit retrofit = null;
public static Retrofit getClient() {
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(getRequestHeader())
.addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
}
Ответ 3
Если вы используете "com.squareup.retrofit2: retrofit: 2.4.0" модифицированную версию> 2, то вы попробуете это:
private OkHttpClient getRequestHeader()
{
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(60, TimeUnit.SECONDS)
.connectTimeout(60, TimeUnit.SECONDS)
.writeTimeout(20, TimeUnit.SECONDS)
.build();
return okHttpClient;
}