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客户端访问返回: /n" + 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);  

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/15697.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论