spring RestTemplater的配置和使用

1.spring配置文件

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop"
  xmlns:task="http://www.springframework.org/schema/task"
  xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
  xmlns:cache="http://www.springframework.org/schema/cache" xmlns:p="http://www.springframework.org/schema/p"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
     http://www.springframework.org/schema/aop
     http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
     http://www.springframework.org/schema/task
     http://www.springframework.org/schema/task/spring-task-4.0.xsd
     http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context-4.0.xsd
     http://www.springframework.org/schema/tx
     http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
     http://www.springframework.org/schema/cache
     http://www.springframework.org/schema/cache/spring-cache-4.0.xsd"
     default-autowire="byName" default-lazy-init="true">
     
     <!-- httpclient的实现,带连接池-->  
    <bean id="ky.pollingConnectionManager" class="org.apache.http.impl.conn.PoolingHttpClientConnectionManager">  
        <!--整个连接池的并发-->  
        <property name="maxTotal" value="200" />  
        <!--每个主机的并发-->  
        <property name="defaultMaxPerRoute" value="200" />  
    </bean>  
  
    <bean id="ky.httpClientBuilder" class="org.apache.http.impl.client.HttpClientBuilder" factory-method="create">  
        <property name="connectionManager" ref="ky.pollingConnectionManager" />  
        <!--开启重试-->  
        <property name="retryHandler">  
            <bean class="org.apache.http.impl.client.DefaultHttpRequestRetryHandler">  
                <constructor-arg value="2"/>  
                <constructor-arg value="true"/>  
            </bean>  
        </property>  
        <property name="defaultHeaders">  
            <list>  
                <bean class="org.apache.http.message.BasicHeader">  
                    <constructor-arg value="User-Agent"/>  
                    <constructor-arg value="Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.16 Safari/537.36"/>  
                </bean>  
                <bean class="org.apache.http.message.BasicHeader">  
                    <constructor-arg value="Accept-Encoding"/>  
                    <constructor-arg value="gzip,deflate"/>  
                </bean>  
                <bean class="org.apache.http.message.BasicHeader">  
                    <constructor-arg value="Accept-Language"/>  
                    <constructor-arg value="zh-CN"/>  
                </bean>  
            </list>  
        </property>  
    </bean>  
  
    <bean id="ky.httpClient" factory-bean="ky.httpClientBuilder" factory-method="build" />  
  
    <bean id="ky.clientHttpRequestFactory" class="org.springframework.http.client.HttpComponentsClientHttpRequestFactory">  
        <constructor-arg ref="ky.httpClient"/>  
        <!--连接超时时间,毫秒-->  
        <property name="connectTimeout" value="5000"/>  
        <!--读写超时时间,毫秒-->  
        <property name="readTimeout" value="10000"/>  
    </bean>  
  
    <bean id="restTemplate" class="org.springframework.web.client.RestTemplate">  
        <constructor-arg ref="ky.clientHttpRequestFactory"/>  
        <property name="errorHandler">  
            <bean class="org.springframework.web.client.DefaultResponseErrorHandler"/>  
        </property>  
        <!--
        <property name="messageConverters">  
            <list>  
                <bean class="org.springframework.http.converter.FormHttpMessageConverter"/>  
                <bean class="org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter"/>
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
                <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 
                    <property name="supportedMediaTypes">  
                        <list>  
                            <value>text/plain;charset=UTF-8</value>  
                        </list>  
                    </property>  
                </bean>
            </list>  
        </property>  
        -->
    </bean> 
    
    <bean id="restService" class="com.ultrapower.tomas.rest.impl.RestService">
        <property name="restTemplate" ref="restTemplate" />   
    </bean>


</beans>


2.提供服务的Service类和接口

public class RestService implements IRestService
{
private static Logger logger = LoggerFactory.getLogger(RestService.class);

private  RestTemplate restTemplate;


public void setRestTemplate(RestTemplate restTemplate)
{
this.restTemplate = restTemplate;
}


@Override
public String doPostForString(String url, Map<String, String> formParams) 
{
if(formParams==null || formParams.isEmpty()) {
return doPost(url);
}
MultiValueMap<String, String> requestEntity = new LinkedMultiValueMap<String, String>();
for(String key : formParams.keySet()) {
requestEntity.add(key, formParams.get(key));
}
        return restTemplate.postForObject(url, requestEntity, String.class);
}


@Override
public Map<String, String> doPostForMap(String url, Map<String, String> formParams) 
{
MultiValueMap<String, String> requestEntity = new LinkedMultiValueMap<String, String>();
for(String key : formParams.keySet()) {
requestEntity.add(key, formParams.get(key));
}
        return restTemplate.postForObject(url, requestEntity, Map.class);
}


@Override
public List<Map<String, String>> doPostForList(String url, Map<String, String> formParams)
{
MultiValueMap<String, String> requestEntity = new LinkedMultiValueMap<String, String>();
for(String key : formParams.keySet()) {
requestEntity.add(key, formParams.get(key));
}
        return restTemplate.postForObject(url, requestEntity, List.class);
}



@Override
public String doPost(String url)
{
return restTemplate.postForObject(url, HttpEntity.EMPTY, String.class);
}


@Override
public String doGetForString(String url, Map<String, String> formParams) 
{
return restTemplate.getForObject(url, String.class, formParams);
}


@Override
public Map<String, String> doGetForMap(String url, Map<String, String> formParams)
{
return restTemplate.getForObject(url, Map.class, formParams);
}


@Override
public List<Map<String, String>> doGetForList(String url, Map<String, String> formParams) 
{
return restTemplate.getForObject(url, List.class, formParams);
}


@Override
public String doGet(String url) 
{
try 
{  
        return restTemplate.getForObject(url,String.class);
         
     } catch (Exception e) 
     {  
          logger.error("GET请求出错:{}", url, e);  
     } 
     return null;
}

}


public interface IRestService 
{


public  String doPostForString (String url, Map<String, String> formParams);
 
public  Map<String, String> doPostForMap (String url, Map<String, String> formParams);
 
public  List<Map<String, String>> doPostForList (String url, Map<String, String> formParams);
  
public  String doPost (String url);
 
 
public  String doGetForString (String url,Map<String, String> formParams);
 
public  Map<String, String> doGetForMap (String url,Map<String, String> formParams);
 
public  List<Map<String, String>> doGetForList (String url,Map<String, String> formParams);
 
public  String doGet (String url);
 
 
}


3.调用rest服务:

restService.doPostForMap(url, params);//url是springmvc控制器某方法的名字,参数要对应上

注意:配置文件中转换器部分代码一定要去掉,否则会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值