Handling timeout with AndroidAnnotations (Spring Rest)
android, android-annotations, rest, spring, spring-mvc
Solution
Assuming tpl is a RestTemplate, you can pass a SimpleClientHttpRequestFactory as parameter to its 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();
Hope it helps.
Problem
Basically, what I'm facing today is the following: - Handle Request time out when doing Rest actions. Seems simple written, but not as easy to code. This is my implementation so far: ``` List<ClientHttpRequestInterceptor> interceptors = new ArrayList<ClientHttpRequestInterceptor>(); interceptors.add( new NetworkInterceptor() ); tpl.setInterceptors( interceptors ); ``` So now, after setting interceptors, I'd like to set custom timeout configurations for the template. So I do the following: `tpl.getRequestFactory()`. This is returning a `InterceptingClientHttpRequestFactory` instead of `SimpleClientHttpRequestFactory` as would be returned in case no interceptors were set. So as it is returning that `InterceptingClientHttpRequestFactory` instance, I can't set the Timeout. You can check the sourcecode of Spring, the last method: http://grepcode.com/file_/repo1.maven.org/maven2/org.springframework/spring-web/3.1.1.RELEASE/org/springframework/http/client/support/InterceptingHttpAccessor.java/?v=source So... Any tips?