使用spring框架中的 RestTemplate訪問rest接口


在開發過程中,有后台服務訪問遠程rest接口的需求,采用spring 框架中的RestTemplate類實現。
RestTemplate類位於org.springframework.web.client包中,提供Http的各類方法:如Get,Head,Post,Put,Delete等,用於訪問rest接口,本文以get方法舉個簡單的例子,介紹RestTemplate類的使用。
 
RestTemplate有兩個構造方法,分別是:
 
public RestTemplate() {
          /**
               ...初始化過程
          */
}
 
public RestTemplate(ClientHttpRequestFactory requestFactory) {
this();
setRequestFactory(requestFactory);
}
其中,第二個構造方法中可以傳入ClientHttpRequestFactory參數,第一個進行默認初始化,需求中我們需要對請求超時進行設置並能夠對超時進行后續處理,第一個構造方法,我們無法控制超時時間,第二個構造中的ClientHttpRequestFactory接口的實現類中存在timeout屬性,因此選用第二個構造方法。
在spring配置文件中進行如下配置:
 
<!-- 配置RestTemplate -->
         <!--Http client Factory-->  
        <bean id="httpClientFactory" class="org.springframework.http.client.SimpleClientHttpRequestFactory">  
            <property name="connectTimeout"  value="${connectTimeout}"/>
            <property name="readTimeout"  value="${readTimeout}"/>
        </bean>  
           
        <!--RestTemplate-->  
        <bean id="restTemplate" class="org.springframework.web.client.RestTemplate">  
            <constructor-arg ref="httpClientFactory"/>  
        </bean>
 
注意:ClientHttpRequestFactory 接口有4個實現類,分別是:
1.AbstractClientHttpRequestFactoryWrapper 用來裝配其他request factory的抽象類。
2.CommonsClientHttpRequestFactory 允許用戶配置帶有認證和http連接池的httpclient,已廢棄,推薦用HttpComponentsClientHttpRequestFactory。
3.HttpComponentsClientHttpRequestFactory 同2.
4.SimpleClientHttpRequestFactory 接口的一個簡單實現,可配置proxy,connectTimeout,readTimeout等參數。
本文中使用的是第4個實現,具體的根據個人需求再選在使用哪個。
 
程序中如何使用:
 
1.在服務類中自動注入:
@Qualifier("restTemplate")
@Autowired
private RestTemplate restTemplate;
 
2. Map<String, Object> urlVariables = new HashMap<String, Object>();
urlVariables.put("param1",param1);
                        urlVariables.put("param2",param2);
 
JSONObject result = restTemplate.getForObject(restURI,
       JSONObject.class, urlVariables);
方法的使用詳細大家再查api。


免責聲明!

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



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