Sie müssen dies einfach tun
OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(15, TimeUnit.SECONDS); // connect timeout
client.setReadTimeout(15, TimeUnit.SECONDS); // socket timeout
Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
Beachten Sie, dass der eingestellte Wert setReadTimeout
derjenige ist, setSoTimeout
der Socket
intern im Internet verwendet wirdOkHttp
Connection
Klasse verwendet wird.
Das Nichteinstellen einer Zeitüberschreitung auf dem OkHttpClient
entspricht dem Festlegen eines Werts von 0
auf setConnectTimeout
oder setReadTimeout
und führt zu keiner Zeitüberschreitung. Beschreibung kann gefunden werden hier .
Wie von @marceloquinta in den Kommentaren erwähnt setWriteTimeout
kann auch eingestellt werden.
Ab Version 2.5.0 sind die Zeitlimitwerte für Lesen, Schreiben und Verbinden standardmäßig auf 10 Sekunden festgelegt, wie von @ChristerNordvik angegeben. Dies kann hier gesehen werden .
Ab OkHttp3 kann dies nun über den Builder so geschehen
client = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
Sie können das Rezept auch hier anzeigen .