Basically, what I'm facing today is the following:
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?
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.
i see the androidannotations document has @Rest annotations
@Rest(rootUrl="yourRootUrl",requestFactory=AppRequestFacetory.class,converters ={..},interceptors={..})
public interface RestApis extends RestClientErrorHandling{...};
AppRequestFacetory.class set TIMEOUT as belows:
@EBean
class AppRequestFactory extends SimpleClientHttpRequestFactory {
     @AfterInject
     void afterinject() {
         setReadTimeout(20*1000); //set 20s read timeout
         setConnectTimeout(20*1000); //set 20s connect timeout
     }
}
and it works . enjoy androidannotations rest api
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With