spring boot单元测试之RestTemplate(二)
上篇博客中,简单介绍了RestTemplate,只是用到了单元测试环节,如果在正式开发环境使用RestTemplate调用远程接口,还有一些配置要做。
一、配置类
由于Spring boot没有对RestTemplate做自动配置,所以我们需要写一个配置类引入RestTemplate。
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
return new RestTemplate(factory);
} @Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setReadTimeout(5000);//单位为ms
factory.setConnectTimeout(5000);//单位为ms
return factory;
}
}
二、工具类
在实际开发过程中,可能对于调用远程接口有多种参数情况,因此写了一个工具类用来支持。
RestTemplate功能非常强大,Post请求的时候特别要注意,body参数必须为MultiValueMap类型。
@Service
public class RestTemplateService {
@Autowired
private RestTemplate restTemplate; /**
* 实测可用
*/
public JSONObject doGet(String url) {
JSONObject json = restTemplate.getForEntity(url, JSONObject.class).getBody();
return json;
} /**
* 实测可用
*/
public JSONObject doGet(String url, HttpHeaders headers) {
HttpEntity<String> entity = new HttpEntity<>(null, headers);
ResponseEntity<JSONObject> exchange = restTemplate.exchange(url, HttpMethod.GET, entity, JSONObject.class);
return exchange.getBody();
} /**
* 实测可用,body参数必须为MultiValueMap类型
*/
public JSONObject doPost(String url, MultiValueMap<String, Object> param) {
JSONObject json = restTemplate.postForEntity(url, param, JSONObject.class).getBody();
return json;
} /**
* 实测可用,body参数必须为MultiValueMap类型
*/
public JSONObject doPost(String url, MultiValueMap<String, Object> params, HttpHeaders headers) {
JSONObject json = restTemplate.postForObject(url, new HttpEntity<>(params, headers), JSONObject.class);
return json;
} }
spring boot单元测试之RestTemplate(二)的更多相关文章
- spring boot单元测试之RestTemplate(一)
写代码重要,写好的代码准确无误,且符合预期那更是必不可少. spring boot内嵌了专门的单元测试模块——RestTemplate,保证了程序员可以对自己的代码进行及时的测试. 闲言少叙,直接上代 ...
- spring boot单元测试之RestTemplate(三)——api详解
本篇内容来自翟永超的<Springcloud微服务实战>,转载请注明. 一.GET请求 在RestTemplate中,对GET请求可以通过如下两个方法进行调用实现. 第一种:getForE ...
- spring boot单元测试之MockMvc
spring单元测试之MockMvc,这个只是模拟,并不是真正的servlet,所以session.servletContext是没法用的. @RunWith(SpringRunner.class) ...
- Java Spring Boot VS .NetCore (二)实现一个过滤器Filter
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- 单元测试之NUnit二
NUnit 分三篇文章介绍,入门者可阅读文章,有基础者直接参考官方文档.初次写博客,望大家指点. 导航: 单元测试之NUnit一 单元测试之NUnit二 单元测试之NUnit三 本文介绍常用的NUni ...
- Spring Boot 2.X(十二):定时任务
简介 定时任务是后端开发中常见的需求,主要应用场景有定期数据报表.定时消息通知.异步的后台业务逻辑处理.日志分析处理.垃圾数据清理.定时更新缓存等等. Spring Boot 集成了一整套的定时任务工 ...
- spring boot学习笔记(二)创建spring boot项目
用eclipse(需要用高版本,要不然弄不出来):new →Spring Sarter Project 用IDEA:一般默认 一般默认 入门级的先 剩下的一般默认... 一.项目至少有下面的东西,里面 ...
- Spring Boot Maven Plugin(二):run目标
简介 Spring Boot Maven Plugin插件提供spring boot在maven中的支持.允许你打包可运行的jar包或war包. 插件提供了几个maven目标和Spring Boot ...
- Spring Boot快速入门(二):http请求
原文地址:https://lierabbit.cn/articles/4 一.准备 postman:一个接口测试工具 创建一个新工程 选择web 不会的请看Spring Boot快速入门(一):Hel ...
随机推荐
- LoadFromStr的使用中出现错误“未结束的字符串常量”
最近遇到个奇怪的问题,就是关于js参数中待换行符时,出现了错误“为结束的字符串常量”. 解决方法是:不直接将该数据以参数形式传递,而是先将其赋值在一个隐藏的文本内,需要调用的函数里只需读取该文本里的内 ...
- WPF-- 合并资源字典
原文:WPF-- 合并资源字典 1. 合并多个外部资源字典成为本地字典 语言 XAML 示例代码 <Page.Resources> <ResourceDicti ...
- linux每个路由表的系统研究
linux那里0~255干脆256张路由表.间0这并不表示unspec(未指定),253.254,255分别default.main.local表. 除了以上4张表外的其它表都是留给用户指定的 ...
- Extensible Access Control List Framework
Methods, systems, and products for governing access to objects on a filesystem. In one general embod ...
- WPF中如何选择合适的元数据标记?(英文)
原文:WPF中如何选择合适的元数据标记?(英文) FrameworkPropertyMetadataOptions Enumeration:Specifies the types of framewo ...
- requireJS简单的学习门户网站
总结 requireJS.这翻译成中国"必须js".说白了就是装js文件与.如何装好了?.这是继AMD标准化的模块化装.除了AMD另一种规范称为CMD规范.跟随CMD兼容模块加载. ...
- Domain adaptation:连接机器学习(Machine Learning)与迁移学习(Transfer Learning)
domain adaptation(域适配)是一个连接机器学习(machine learning)与迁移学习(transfer learning)的新领域.这一问题的提出在于从原始问题(对应一个 so ...
- IIS运行WCF服务报错
试图加载格式不正确的程序 image 解决方法 image HTTP 错误 500.19 image 解决方法在控制面板————>程序————>启用或关闭windows功能—— ...
- 利用FR导出PDF汉字乱码的处理
利用FR导出pdf,然后在unigui中显示,发现汉字乱码,改成gb2312,不乱码,但不自动折行,最后是改成DefaultCharSet搞定.FR版本:5.4.6 后记:有的浏览器中还是乱码,把字体 ...
- 【msdn wpf forum翻译】如何在wpf程序(程序激活时)中捕获所有的键盘输入,而不管哪个元素获得焦点?
原文:[msdn wpf forum翻译]如何在wpf程序(程序激活时)中捕获所有的键盘输入,而不管哪个元素获得焦点? 原文链接:http://social.msdn.microsoft.com/Fo ...