gpt4 book ai didi

android - 使用 AndroidAnnotations (Spring Rest) 处理超时

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:00:15 27 4
gpt4 key购买 nike

基本上,我今天面临的是以下内容:

  • 在执行 Rest 操作时处理请求超时。

看似简单的编写,但并不容易编码。

到目前为止,这是我的实现:

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

tpl.setInterceptors( interceptors );

现在,在设置拦截器之后,我想为模板设置自定义超时配置。

所以我做了以下事情:tpl.getRequestFactory()

这将返回一个 InterceptingClientHttpRequestFactory 而不是 SimpleClientHttpRequestFactory ,因为在没有设置拦截器的情况下会返回。

因此,当它返回 InterceptingClientHttpRequestFactory 实例时,我无法设置超时。

可以查看Spring的源码,最后一个方法: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

那么……有什么建议吗?

最佳答案

假设 tpl 是一个 RestTemplate,您可以将 SimpleClientHttpRequestFactory 作为参数传递给它的构造函数:

    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();

希望对您有所帮助。

关于android - 使用 AndroidAnnotations (Spring Rest) 处理超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21451341/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com