Hola amigos, estoy consumiendo un Web Service tipo REST, usando una conexión HttpJob y configurando el TimeOut a 6 segundos con este comando XJob.GetRequest.Timeout = 6000, este timeout es muy importante, porque es una App de uso intenso y si el WebService tarda más de 6 segundos, debe pasar a otro proceso.
Pero me han dicho que el comando GetRequest.Timeout es solo para el Timeout de conexión y que OkHttp tiene un Timeout para conexión (connectTimeout) y otro para lectura (readTimeout) (https://www.baeldung.com/okhttp-timeouts). Entonces cuando la conexión dura más de 6 segundos, el Timeout de conexión se dispara y todo funciona bien.
El problema viene cuando la conexión dura menos de 6 segundos, pero la respuesta del WebSevice puede durar hasta 30 segundos, entonces el Timeout de respuesta lo controla el readTimeout. Encontré este código en Java, pero no se programar en Java y tampoco cómo implementar este código en B4A:
¿Existe alguna forma de configurar el readTimeout en B4A nativo?
Les agradecería mucho cualquier ayuda que me puedan brindar, ya que estoy por encima de mi deadline y mi cliente empieza a enojarse.
De antemano muchas gracias.
Pero me han dicho que el comando GetRequest.Timeout es solo para el Timeout de conexión y que OkHttp tiene un Timeout para conexión (connectTimeout) y otro para lectura (readTimeout) (https://www.baeldung.com/okhttp-timeouts). Entonces cuando la conexión dura más de 6 segundos, el Timeout de conexión se dispara y todo funciona bien.
El problema viene cuando la conexión dura menos de 6 segundos, pero la respuesta del WebSevice puede durar hasta 30 segundos, entonces el Timeout de respuesta lo controla el readTimeout. Encontré este código en Java, pero no se programar en Java y tampoco cómo implementar este código en B4A:
B4X:
@Test
public void whenReadTimeoutExceeded_thenSocketTimeoutException() {
OkHttpClient client = new OkHttpClient.Builder()
.readTimeout(10, TimeUnit.MILLISECONDS)
.build();
Request request = new Request.Builder()
.url("https://httpbin.org/delay/2") // 2-second response time
.build();
Throwable thrown = catchThrowable(() -> client.newCall(request).execute());
assertThat(thrown).isInstanceOf(SocketTimeoutException.class);
}
¿Existe alguna forma de configurar el readTimeout en B4A nativo?
Les agradecería mucho cualquier ayuda que me puedan brindar, ya que estoy por encima de mi deadline y mi cliente empieza a enojarse.
De antemano muchas gracias.