Insight spring RestTemplate

原创 2018年01月03日 17:07:57

insight spring 提供的rest操作,以及jdk自带URL http访问的实现。

spring RestTemplate 执行流程

/**
 * http请求,根据指定的方法访问URI
 * @param requestCallback write请求对象至 request。借助HttpMessageConverter 组件,转换对象,如json的序列化
 *      类比前端ajax请求,JSON.stringify(request)
 * @param responseExtractor 从response 解析返回值。responseExtractor 封装HttpMessageConverter 组件,用以转换response,比如json的反序列化。
 *      new HttpMessageConverterExtractor<T>(responseType, getMessageConverters(), logger);
 */
protected <T> T doExecute(URI url, HttpMethod method, RequestCallback requestCallback, ResponseExtractor<T> responseExtractor) {
    try {
        // 1.构造request (open a connection, set timeout...)
        ClientHttpRequest request = createRequest(url, method);
        if (requestCallback != null) {
            // 2.序列化request,write bytes to request body
            requestCallback.doWithRequest(request);
        }
        // 3.check、connect,构造response
        response = request.execute();
        // 4.handle error
        handleResponse(url, method, response);
        if (responseExtractor != null) {
            // 5.解析、反序列化response
            return responseExtractor.extractData(response);
        }
    } catch (IOException ex) {
        // ......
    } finally {
        // 6.切记close InputStream
        if (response != null) {
            response.close();
        }
    }
}

JDK 自带URL实现的http访问
对应上述的执行流程,JDK URL的具体操作

/*
 * createRequest 实现
 */
// 根据url协议创建对应的URLConnection,不会真正的建立网络连接.
URLConnection connection = (HttpURLConnection) url.openConnection();
// A timeout of zero is interpreted as an infinite timeout.
connection.setConnectTimeout(this.connectTimeout);
connection.setReadTimeout(this.readTimeout);
connection.setDoInput(true);
// 如果是POST、PUT、PATCH、DELETE方法,需要enable output
connection.setDoOutput(true);
// 默认方法是GET.
connection.setRequestMethod(httpMethod);
/**
 * request.execute 实现
 */
connection.setRequestProperty("Cookie", headerValue);
connection.addRequestProperty(headerName, actualHeaderValue);
// 构造Response,responseBody = connection.getInputStream()
new SimpleClientHttpResponse(connection)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tt50335971/article/details/78963307

spring RestTemplate使用

最近看到spring RestTemplate,觉得挺好用的,就研究总结了一下,第一次写。。。 RestTemplate可使用http的所有方式进行请求,本文主要说明下get,post的使用,其他的...
  • LV003
  • LV003
  • 2017-02-14 00:38:12
  • 3116

spring restTemplate配置

id="pollingConnectionManager" class="org.apache.http.impl.conn.PoolingHttpClientConnectionManager"> ...
  • a294039255
  • a294039255
  • 2017-06-26 17:51:36
  • 1812

Spring模拟HTTP请求——RestTemplate类使用的理解

Spring模拟HTTP请求——RestTemplate类使用的理解 上一阶段wab项目由于需要跨系统访问,从同事之前写的代码中发现了RestTemplate类,才知道Spring已经对wab请求已经...
  • madmk
  • madmk
  • 2017-07-31 13:46:31
  • 3699

Spring RestTemplate 详解

我们在web开发中发布的restapi大多数的时候是由XMLHttpRequest对象来消费的。即JavaScript客户端。 但是我们rest api是跨语言的。不仅仅JavaScript可以调用...
  • u013803262
  • u013803262
  • 2017-03-27 10:51:13
  • 791

Spring boot resttemplate 其实也可以当成http client来用

这段时间都在用Spring boot,真的是非常的方便,去除了繁琐的copy文件搭建项目的问题。在这期间遇到了一个要请求别人服务器接口的问题,一开始是用到了http client来请求的,但是个人觉得...
  • ZW_KK
  • ZW_KK
  • 2017-12-24 21:58:36
  • 267

Spring RestTemplate 实践

什么是RestTemplate?RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率...
  • catoop
  • catoop
  • 2016-03-18 10:02:09
  • 11630

Spring RestTemplate的使用方式

RestTemplate接口 1.1 GET接口 public T getForObject(String url, Class responseType, Map ur...
  • whu_jack
  • whu_jack
  • 2017-03-30 15:27:35
  • 1118

Spring RestTemplate

  • 2010年11月28日 09:50
  • 1007KB
  • 下载

Spring Boot中RestTemplate的使用

RestTempla
  • cxd275050943
  • cxd275050943
  • 2017-12-08 15:04:39
  • 325
收藏助手
不良信息举报
您举报文章:Insight spring RestTemplate
举报原因:
原因补充:

(最多只允许输入30个字)