RestTemplate

什么是RestTemplate?

传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。spring提供了一种简单便捷的模板类来进行操作,这就是RestTemplate。

一个简单的例子

定义一个简单的restful接口

@RestController
public class TestController
{@RequestMapping(value = "testPost", method = RequestMethod.POST)public ResponseBean testPost(@RequestBody RequestBean requestBean){ResponseBean responseBean = new ResponseBean();responseBean.setRetCode("0000");responseBean.setRetMsg("succ");return responseBean;}
}

使用RestTemplate访问该服务

 //请求地址String url = "http://localhost:8080/testPost";//入参RequestBean requestBean = new RequestBean();requestBean.setTest1("1");requestBean.setTest2("2");requestBean.setTest3("3");RestTemplate restTemplate = new RestTemplate();ResponseBean responseBean = restTemplate.postForObject(url, requestBean, ResponseBean.class);

从这个例子可以看出,使用restTemplate访问restful接口非常的简单粗暴无脑。(url, requestMap,
ResponseBean.class)这三个参数分别代表 请求地址、请求参数、HTTP响应转换被转换成的对象类型。

RestTemplate方法的名称遵循命名约定,第一部分指出正在调用什么HTTP方法,第二部分指示返回的内容。本例中调用了restTemplate.postForObject方法,post指调用了HTTP的post方法,Object指将HTTP响应转换为您选择的对象类型。还有其他很多类似的方法,有兴趣的同学可以参考官方api。

手动指定转换器(HttpMessageConverter)

我们知道,调用reseful接口传递的数据内容是json格式的字符串,返回的响应也是json格式的字符串。然而restTemplate.postForObject方法的请求参数RequestBean和返回参数ResponseBean却都是java类。是RestTemplate通过HttpMessageConverter自动帮我们做了转换的操作。

默认情况下RestTemplate自动帮我们注册了一组HttpMessageConverter用来处理一些不同的contentType的请求。
你可以在org.springframework.http.converter包下找到所有spring帮我们实现好的转换器。
如果现有的转换器不能满足你的需求,你还可以实现org.springframework.http.converter.HttpMessageConverter接口自己写一个。详情参考官方api。

选好了HttpMessageConverter后怎么把它注册到我们的RestTemplate中呢。

 RestTemplate restTemplate = new RestTemplate();//获取RestTemplate默认配置好的所有转换器List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();//默认的MappingJackson2HttpMessageConverter在第7个 先把它移除掉messageConverters.remove(6);//添加上GSON的转换器messageConverters.add(6, new GsonHttpMessageConverter());

这个简单的例子展示了如何使用GsonHttpMessageConverter替换掉默认用来处理application/json的MappingJackson2HttpMessageConverter。

出处:https://www.jianshu.com/p/90ec27b3b518

HTTP 请求工具类-RestTemplate相关推荐

  1. C#实现的UDP收发请求工具类实例

    本文实例讲述了C#实现的UDP收发请求工具类.分享给大家供大家参考,具体如下: 初始化: ListeningPort = int.Parse(ConfigurationManager.AppSetti ...

  2. 【Java】HTTP请求工具类

    前言 在工作中可能存在要去调用其他项目的接口,这篇文章我们实现在Java代码中实现调用其他项目的接口. 本章内容: 创建一个携带参数的POST请求,去请求其他项目的接口并返回数据. 附加HTTP请求工 ...

  3. HTTP POST 请求工具类

    HTTP/HTTPS POST 请求工具类 Maven pom.xml 引入依赖 <dependency><groupId>org.apache.httpcomponents& ...

  4. 【Http请求工具类】

    Http请求工具类(待优化) 添加相关依赖 <!-- 发送http请求依赖 --><dependency><groupId>commons-io</group ...

  5. http和https请求工具类

    https请求 @Slf4j public class HttpPostUtils {public static int RESPONSE_STATUS_OK = 0;public static JS ...

  6. Java 常用HTTP请求工具类HttpUtils

    .pom依赖 <!-- httpclient --><dependency><groupId>org.apache.httpcomponents</group ...

  7. .NET WebApi调用微信接口Https请求工具类

    .NET WebApi调用微信接口Https请求工具类 using System; using System.Collections.Generic; using System.IO; using S ...

  8. HTTP请求工具类(POST)

    HTTP请求工具类    POST请求 package com.cuierdan.utils;import org.apache.logging.log4j.LogManager; import or ...

  9. Http请求工具类:Get/Post

    第一种 import com.alibaba.fastjson.JSONObject; import org.apache.http.HttpEntity; import org.apache.htt ...

最新文章

  1. 钢结构节点输出软件_BIM助力桥梁钢结构设计施工一体化建设
  2. Android开发工具——ADB(Android Debug Bridge) 二HOST端
  3. 计算机网络:Socket网络通信底层数据传输
  4. “概率模型与计算机视觉”-林达华
  5. react native基本调试技巧
  6. app分发平台java_集成 Asset Delivery (Java)
  7. 老男孩教育参观云计算公司
  8. 解释器android,Android的设计模式-解释器模式
  9. Android系统启动过程
  10. Cannot create container for service peer1.org2.example.com: Conflict. 解决方案
  11. Groovy 教程-- Groovy 入门
  12. Autodesk 首届云编程马拉松过程纪实和感想
  13. 你可能会读错的字大集合
  14. 安装centos6.5没有网,右上角也没有网络图标
  15. Windows中使用cmd查看磁盘及其格式
  16. 幻影路由服务器无响应,幻影D128路由器连不上网怎么办? | 192路由网
  17. CloudComparePCL 剔除点云中的重复点
  18. 如何提问,提问技巧,如何有效的获取问题的答案
  19. Java Json和yaml转换
  20. MindSpore实现手写数字识别代码

热门文章

  1. Golang 依赖注入
  2. mysql where 1 作用_mysql中使用 where 1=1和 0=1 的作用
  3. Invalid options object. Dev Server has been initialized using an options object
  4. IndexOf与substring的使用
  5. C语言试题(答案带解析)
  6. 解决v-for轮播图中图片无法显示
  7. android复制工具,2款实用的Android 安卓手机任意界面所有文字随意「复制」工具...
  8. Muddy Puddle
  9. Apple Swift
  10. Qt:使用qDebug()函数调试