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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM