Sie können Zeitüberschreitungen auf dem zugrunde liegenden HTTP-Client festlegen. Wenn Sie keinen Client angeben, erstellt Retrofit einen Client mit Standard-Timeouts für das Verbinden und Lesen. Um Ihre eigenen Zeitüberschreitungen festzulegen, müssen Sie Ihren eigenen Client konfigurieren und an den RestAdapter.Builder
.
Eine Option ist die Verwendung des OkHttp- Clients, ebenfalls von Square.
1. Fügen Sie die Bibliotheksabhängigkeit hinzu
Fügen Sie im build.gradle die folgende Zeile ein:
compile 'com.squareup.okhttp:okhttp:x.x.x'
Wo x.x.x
ist die gewünschte Bibliotheksversion?
2. Stellen Sie den Client ein
Wenn Sie beispielsweise eine Zeitüberschreitung von 60 Sekunden festlegen möchten, gehen Sie folgendermaßen für Nachrüstung vor Version 2 und Okhttp vor Version 3 vor ( FÜR NEUERE VERSIONEN SIEHE DIE BEARBEITUNGEN ):
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();
}
BEARBEITEN 1
Für okhttp-Versionen seitdem 3.x.x
müssen Sie die Abhängigkeit folgendermaßen festlegen:
compile 'com.squareup.okhttp3:okhttp:x.x.x'
Stellen Sie den Client anhand des Builder-Musters ein:
final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(60, TimeUnit.SECONDS)
.connectTimeout(60, TimeUnit.SECONDS)
.build();
Weitere Infos unter Timeouts
BEARBEITEN 2
Nachrüstversionen verwenden seitdem 2.x.x
auch das Builder-Muster. Ändern Sie daher den obigen Rückgabeblock wie folgt:
return new Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttpClient)
.build();
Wenn Sie einen Code wie meine providesRestAdapter
Methode verwenden, ändern Sie den Rückgabetyp der Methode in Nachrüsten .
Weitere Informationen finden Sie im Retrofit 2 - Upgrade-Handbuch von 1.9
ps: Wenn Ihre minSdkVersion größer als 8 ist, können Sie Folgendes verwenden TimeUnit.MINUTES
:
okHttpClient.setReadTimeout(1, TimeUnit.MINUTES);
okHttpClient.setConnectTimeout(1, TimeUnit.MINUTES);
Weitere Informationen zu den Einheiten finden Sie unter TimeUnit .