疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

使用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);
        疯狂Java培训紧跟最前沿的技术潮流,企业全真项目训练,培养学生的实践动手能力。技术的日新月异,不断的进步,学校的技术知识已经不能满足社会的要求,在疯狂软件学院你能学到最前沿的Java技术,疯狂Java培训主要培养的是Java专业人才。学员毕业之后的代码量至少达到项目经理的水平。学员学完后实践经验相当于在工作1—2年的工作经验。疯狂软件学院有完善的就业服务机制,为学员提供就业服务。如需了解更多,请登陆疯狂Java官网( http://www.fkjava.org抢座热线:020-28309358 020-28309378咨询QQ:707552864 ,544627560),我们会为你一一解答,理想在向你招手,还等什么?快点来吧!