Możesz ustawić limity czasu dla bazowego klienta HTTP. Jeśli nie określisz klienta, Retrofit utworzy go z domyślnymi limitami czasu połączenia i odczytu. Aby ustawić własne limity czasu, musisz skonfigurować własnego klienta i dostarczyć go doRestAdapter.Builder
.
Opcją jest użycie klienta OkHttp , również z Square.
1. Dodaj zależność biblioteki
W build.gradle dołącz ten wiersz:
compile 'com.squareup.okhttp:okhttp:x.x.x'
Gdzie x.x.x
jest żądana wersja biblioteki.
2. Ustaw klienta
Na przykład, jeśli chcesz ustawić limit czasu na 60 sekund, zrób tak w przypadku Retrofit przed wersją 2 i Okhttp przed wersją 3 ( W WERSJACH WERSJI, ZOBACZ EDYCJE ):
public RestAdapter providesRestAdapter(Gson gson) {
final OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setReadTimeout(60, TimeUnit.SECONDS);
okHttpClient.setConnectTimeout(60, TimeUnit.SECONDS);
return new RestAdapter.Builder()
.setEndpoint(BuildConfig.BASE_URL)
.setConverter(new GsonConverter(gson))
.setClient(new OkClient(okHttpClient))
.build();
}
EDYCJA 1
W przypadku wersji okhttp 3.x.x
musisz ustawić zależność w ten sposób:
compile 'com.squareup.okhttp3:okhttp:x.x.x'
I ustaw klienta za pomocą wzorca konstruktora:
final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(60, TimeUnit.SECONDS)
.connectTimeout(60, TimeUnit.SECONDS)
.build();
Więcej informacji w Limit czasu
EDYCJA 2
Wersje doposażane, ponieważ 2.x.x
również używają wzorca konstruktora, więc zmień powyższy blok powrotu na:
return new Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
Jeśli używasz kodu takiego jak moja providesRestAdapter
metoda, zmień typ zwracanej metody na Retrofit .
Więcej informacji w Retrofit 2 - Podręcznik aktualizacji z wersji 1.9
ps: jeśli twoja minSdkVersion jest większa niż 8, możesz użyć TimeUnit.MINUTES
:
okHttpClient.setReadTimeout(1, TimeUnit.MINUTES);
okHttpClient.setConnectTimeout(1, TimeUnit.MINUTES);
Aby uzyskać więcej informacji na temat jednostek, zobacz TimeUnit .