• restTemplate设置访问超时


    (一)RestTemplate 客户端

    1、RestTemplate 是Spring的封装,需要spring的包 spring-web-3.0.7.RELEASE.jar

    2、客户端代码:

     1 /** 
     2  * RestTemplate 客户端访问 
     3  */  
     4 private void RestTemplateVisit() {  
     5     String returnXml = ""; // 核心返回结果报文字符串  
     6   
     7     try {  
     8   
     9         //复杂构造函数的使用  
    10         SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();  
    11         requestFactory.setConnectTimeout(1000);// 设置超时  
    12         requestFactory.setReadTimeout(1000);  
    13   
    14         //利用复杂构造器可以实现超时设置,内部实际实现为 HttpClient  
    15         RestTemplate restTemplate = new RestTemplate(requestFactory);  
    16   
    17         //设置HTTP请求头信息,实现编码等  
    18         HttpHeaders requestHeaders = new HttpHeaders();  
    19         // requestHeaders.set("Accept", "text/");  
    20         requestHeaders.set("Accept-Charset", "utf-8");  
    21         requestHeaders.set("Content-type", "text/xml; charset=utf-8");// 设置编码  
    22   
    23         //利用容器实现数据封装,发送  
    24         HttpEntity<String> entity = new HttpEntity<String>(mRequestXml, requestHeaders);  
    25         returnXml = restTemplate.postForObject(mUrl, entity, String.class);  
    26   
    27         // 转码原因:RestTemplate默认是使用org.springframework.http.converter.StringHttpMessageConverter来解析  
    28         // StringHttpMessageConverter 默认用的 ISO-8859-1来编码的  
    29         returnXml = new String(returnXml.getBytes("ISO-8859-1"), "utf-8");  
    30   
    31     } catch (UnsupportedEncodingException e) {  
    32         e.printStackTrace();  
    33     }  
    34   
    35     System.out.println("restTemplate客户端访问返回: 
    " + returnXml);  
    36 }  

    (二)RestTemplate 详解

    1、两个构造方法:第二个实现超时。

    public RestTemplate() {  
              /** 
                   ...初始化过程 
              */  
    }  
       
    //实现超时  
    public RestTemplate(ClientHttpRequestFactory requestFactory) {  
         this();  
         setRequestFactory(requestFactory);  
    }  

    其中,第二个构造方法中可以传入ClientHttpRequestFactory参数,第一个进行默认初始化,因为我们经常需要对请求超时进行设置并能够对超时进行后续处理,而第一个构造方法,我们无法控制超时时间,第二个构造中的ClientHttpRequestFactory接口的实现类中存在timeout属性,因此选用第二个构造方法。

    1 SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();  
    2 requestFactory.setConnectTimeout(1000);  
    3 requestFactory.setReadTimeout(1000);  
    4   
    5 RestTemplate restTemplate = new RestTemplate(requestFactory);  
  • 相关阅读:
    Markdown基本语法
    Hexo 集成 Gitalk 评论系统
    hexo添加百度统计
    tf.nn.softmax
    tf.InteractiveSession()与tf.Session()
    归一化、标准化、正则化的区别
    感受野的概念
    CNN中的low-level feature 与high-level feature
    安装vncserver后导致Ubuntu循环登录进入不了桌面的问题原因及解决办法
    python3 + Tensorflow + Faster R-CNN训练自己的数据
  • 原文地址:https://www.cnblogs.com/shamo89/p/8177182.html
Copyright © 2020-2023  润新知