zoukankan      html  css  js  c++  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);
    方法的使用详细大家再查api。
  • 相关阅读:
    ADPlus
    'telnet' is not recognized as an internal or external command
    图片二进制上传2
    window.opener返回值的用法
    UrlRewriter 重写的问题
    缩略图 水印
    读取二进制图片问题
    正则表达式匹配问题
    .NET读excl数据
    js调用其他页面输出内容
  • 原文地址:https://www.cnblogs.com/yanzhenxing/p/3083161.html
Copyright © 2011-2022 走看看