Estoy desarrollando una aplicación usando la biblioteca OkHttp y mi problema es que no puedo encontrar cómo configurar el tiempo de espera de conexión y el tiempo de espera del socket.
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
Respuestas:
Simplemente tienes que hacer esto
Tenga en cuenta que el valor fijado en
setReadTimeout
es el utilizado ensetSoTimeout
elSocket
interior de laOkHttp
Connection
clase.No establecer un tiempo de espera en el
OkHttpClient
es el equivalente a establecer un valor de0
ensetConnectTimeout
osetReadTimeout
y no dará lugar a ningún tiempo de espera. La descripción se puede encontrar aquí .Como mencionó @marceloquinta en los comentarios
setWriteTimeout
, también se puede configurar.A partir de la versión 2.5.0, los valores de tiempo de espera de lectura / escritura / conexión se establecen en 10 segundos de forma predeterminada, como lo menciona @ChristerNordvik. Esto se puede ver aquí .
A partir de ahora OkHttp3 puede hacerlo a través del constructor como tal
También puedes ver la receta aquí .
fuente
Para okhttp3 esto ha cambiado un poco.
Ahora configura los tiempos usando el generador, y no los configuradores, de esta manera:
Se puede encontrar más información en su wiki: https://github.com/square/okhttp/blob/b3dcb9b1871325248fba917458658628c44ce8a3/docs/recipes.md#timeouts-kt-java
fuente
Para Retrofit retrofit: 2.0.0-beta4, el código es el siguiente
fuente
Para Retrofit 2.0.0-beta1 o beta2, el código es el siguiente
fuente
fuente
Ha cambiado ahora. Reemplazar
.Builder()
con.newBuilder()
A partir de okhttp: 3.9.0, el código es el siguiente:
fuente
versión okhttp:
3.11.0
o superiordel código fuente de okhttp
unit
puede ser cualquier valor de abajocódigo de ejemplo
Actualizado
He agregado una nueva api a okhttp desde la versión
3.12.0
, puede configurar el tiempo de espera de esta manera:NOTA: Esto requiere API 26+, por lo que si admite versiones anteriores de Android, continúe usándolo
(5, TimeUnit.SECONDS)
.fuente
al igual que:
fuente
esto funcionó para mí ... de https://github.com/square/okhttp/issues/3553
fuente
Si desea personalizar la configuración, use primero la metodología siguiente para crear OKhttpclient y luego agregue el generador encima.
fuente
Puede establecer un tiempo de espera de llamada para cubrir todo el ciclo desde la resolución de DNS, la conexión, la escritura del cuerpo de la solicitud, el procesamiento del servidor y la lectura del cuerpo de la respuesta.
fuente