使用AndroidAnnotations处理超时(Spring Rest)

 shyaiqq 发布于 2023-01-30 14:06

基本上,我今天面临的是以下几点:

处理休息操作时处理请求超时.

看起来很简单,但编码并不容易.

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

List interceptors = new ArrayList();
interceptors.add( new NetworkInterceptor() );

tpl.setInterceptors( interceptors );

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

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

如果没有设置拦截器,则返回a InterceptingClientHttpRequestFactory而不是SimpleClientHttpRequestFactory返回.

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

您可以查看Spring的源代码,最后一种方法:http://grepcode.com/file_/repo1.maven.org/maven2/org.springframework/spring-web/3.1.1.RELEASE/org/springframework/http/客户机/支撑/ InterceptingHttpAccessor.java /?v =源

所以...任何提示?

2 个回答
  • 我看到androidannotations文档有@Rest注释

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

    AppRequestFacetory.class设置TIMEOUT如下:

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

    它的工作原理.享受androidannotations rest api

    2023-01-30 14:09 回答
  • 假设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();
    

    希望能帮助到你.

    2023-01-30 14:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有