Manejo del tiempo de espera con AndroidAnnotations (Spring Rest)

Básicamente, lo que estoy enfrentando hoy es el siguiente:

  • Manejar Tiempo de espera de la petición al hacer las acciones de descanso.

Parece sencillo escrito, pero no tan fácil de codificar.

Esta es mi implementación hasta ahora:

List<ClientHttpRequestInterceptor> interceptors = new ArrayList<ClientHttpRequestInterceptor>(); interceptors.add( new NetworkInterceptor() ); tpl.setInterceptors( interceptors ); 

Así que ahora, después de establecer interceptores, me gustaría establecer configuraciones de tiempo de espera personalizadas para la plantilla.

Así que hago lo siguiente: tpl.getRequestFactory() .

Esto está devolviendo un InterceptingClientHttpRequestFactory lugar de SimpleClientHttpRequestFactory como sería devuelto en caso de que no se establecieron interceptores.

Así que como está devolviendo esa instancia de InterceptingClientHttpRequestFactory , no puedo establecer el tiempo de espera.

Puede comprobar el código fuente de Spring, el último método: http://grepcode.com/file_/repo1.maven.org/maven2/org.springframework/spring-web/3.1.1.RELEASE/org/springframework/http/ Client / support / InterceptingHttpAccessor.java /? V = fuente

Así que … ¿Alguna sugerencia?

    3 Solutions collect form web for “Manejo del tiempo de espera con AndroidAnnotations (Spring Rest)”

    Suponiendo que tpl es un RestTemplate, puede pasar un SimpleClientHttpRequestFactory como parámetro a su constructor:

      List<ClientHttpRequestInterceptor> interceptors = new ArrayList<ClientHttpRequestInterceptor>(); interceptors.add( new NetworkInterceptor() ); SimpleClientHttpRequestFactory s = new SimpleClientHttpRequestFactory(); s.setReadTimeout(5000); s.setConnectTimeout(1000); RestTemplate tpl = new RestTemplate(s);//Or however you instantiated it tpl.setInterceptors( interceptors ); ClientHttpRequestFactory c = tpl.getRequestFactory(); 

    Espero eso ayude.

    Veo el documento androidannotations tiene @Rest anotaciones

     @Rest(rootUrl="yourRootUrl",requestFactory=AppRequestFacetory.class,converters ={..},interceptors={..}) public interface RestApis extends RestClientErrorHandling{...}; 

    AppRequestFacetory.class establecer TIMEOUT como belows:

     @EBean class AppRequestFactory extends SimpleClientHttpRequestFactory { @AfterInject void afterinject() { setReadTimeout(20*1000); //set 20s read timeout setConnectTimeout(20*1000); //set 20s connect timeout } } 

    y funciona . Disfrute androidannotations rest api

    Cuando necesitaba configurar el resto de anotaciones de Android cliente He usado código como este:

      ClientHttpRequestFactory requestFactory = restClient.getRestTemplate().getRequestFactory(); if (requestFactory instanceof SimpleClientHttpRequestFactory) { Log.d("HTTP", "HttpUrlConnection is used"); ((SimpleClientHttpRequestFactory) requestFactory).setConnectTimeout(3 * 1000); ((SimpleClientHttpRequestFactory) requestFactory).setReadTimeout(3 * 1000); } else if (requestFactory instanceof HttpComponentsClientHttpRequestFactory) { Log.d("HTTP", "HttpClient is used"); ((HttpComponentsClientHttpRequestFactory) requestFactory).setReadTimeout(3 * 1000); ((HttpComponentsClientHttpRequestFactory) requestFactory).setConnectTimeout(3 * 1000); } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.