Spring RestTemplate的使用(解决put,delete方法无返回值问题)
Spring RestTemplate的使用(解决put,delete方法无返回值问题)
---------------------
作者:汐日南莘
来源:CSDN
原文:https://blog.csdn.net/u010180738/article/details/61439630
版权声明:本文为博主原创文章,转载请附上博文链接!
Spring提供了RestTemplate,可以利用RestTemplate调用REST资源。
同时也可以用作服务端到服务端发送请求。
在Java后台开发中,也可以使用RestTemplate来测试接口。
RestTemplate支持get,put,delete,post操作。
package com.test;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MimeType;
import org.springframework.util.MimeTypeUtils;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import java.nio.charset.Charset;
/**
* Created by XFL.
* time on 2017/3/8 23:37
* description:测试工具类
*/
public class RestTester {
private final String url;
private final MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
public void set(String key, String value) {
params.add(key, value);
}
/**
* 构造方法,请求url.
*
* @param url 请求地址
*/
public RestTester(String url) {
super();
this.url = url;
}
/**
* 发送get请求.
*
* @return 返回请求结果
*/
public <T> T get(Class<T> cls) {
String fullUrl = UriComponentsBuilder.fromHttpUrl(url).queryParams(params).build().toUriString();
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<T> resultEntity = restTemplate.getForEntity(fullUrl, cls);
return resultEntity.getBody();
}
/**
* 发送post请求.
*
* @return 返回请求结果
*/
public <T> T post(Class<T> cls) {
String fullUrl = UriComponentsBuilder.fromHttpUrl(url).build().toUriString();
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<T> resultEntity = restTemplate.postForEntity(fullUrl, params, cls);
return resultEntity.getBody();
}
/**
* 发送/获取 服务端数据(主要用于解决发送put,delete方法无返回值问题).
*
* @param url 绝对地址
* @param method 请求方式
* @param bodyType 返回类型
* @param <T> 返回类型
* @return 返回结果(响应体)
*/
public <T> T exchange(String url, HttpMethod method, Class<T> bodyType) {
// 请求头
HttpHeaders headers = new HttpHeaders();
MimeType mimeType = MimeTypeUtils.parseMimeType("application/json");
MediaType mediaType = new MediaType(mimeType.getType(), mimeType.getSubtype(), Charset.forName("UTF-8"));
// 请求体
headers.setContentType(mediaType);
//提供json转化功能
ObjectMapper mapper = new ObjectMapper();
String str = null;
try {
if (!params.isEmpty()) {
str = mapper.writeValueAsString(params);
}
} catch (JsonProcessingException e) {
e.printStackTrace();
}
// 发送请求
HttpEntity<String> entity = new HttpEntity<>(str, headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<T> resultEntity = restTemplate.exchange(url, method, entity, bodyType);
return resultEntity.getBody();
}
}
测试get方式
package com.test;
/**
* Created by XFL
* time on 2017/3/8 23:41
* description:测试Get方法
*/
public class TestGet {
public static void main(String[] args) {
RestTester restTester = new RestTester("http://localhost:8080/Test");
String result = restTester.get(String.class);
System.out.println(result);
}
}
Spring RestTemplate的使用(解决put,delete方法无返回值问题)相关推荐
- Spring MVC 中的 controller层的方法的返回值类型
Controller方法的返回值可以有以下几种: 1.返回ModelAndView 返回ModelAndView时最常见的一种返回结果.需要在方法结束的时候定义一个ModelAndView对象,并对M ...
- Python中Tkinter解决button的command无返回值问题
Tkinter是什么 Tkinter是Python的标准GUI库.Python使用Tkinter可以快速地创建GUI应用程序.由于Tkinter属于Python标准库,就不需要使用pip安装,直接导入 ...
- controller调用另一个controller中的方法 获取返回值_必须掌握!你知道 Spring 中运用的 9 种设计模式吗 ?...
Spring中涉及的设计模式总结,在面试中也会经常问道 Spring 中设计模式的问题.本文以实现方式.实质.实现原理的结构简单介绍 Sping 中应用的 9 种设计模型,具体详细的刨析会在后面的文章 ...
- Spring MVC使用篇(八)—— 处理器(Handler)方法的返回值
文章目录 1.演示项目环境搭建 1.1 演示项目工程结构 1.2 演示项目依赖的基础jar包 1.3 配置web.xml 1.4 配置Spring MVC核心配置文件 2.返回ModelAndView ...
- SpringMVC——处理器方法的返回值类型
目录 1. 控制器controller方法的返回值 1.1 返回值类型:ModelAndView 1.2 返回值类型:String 1.3返回值类型:void 1.4 返回值类型:Object(可以是 ...
- Spring-AOP @AspectJ进阶之绑定连接点方法的返回值
文章目录 概述 实例 概述 在后置增强中,可以通过returning绑定连接点方法的返回值 实例 代码已托管到Github-> https://github.com/yangshangwei/S ...
- iBaits中,关于insert返回值的问题(注意!!!不必写resultClass= java.lang.Integer,方法的返回值就是int)
今天工作中使用iBaits写SQL,其中一个是insert语句 在sqlMap中我这么写了,<insert parameterClass="...." resultClass ...
- SpringMVC——控制器方法的返回值类型(ModelAndView、String、void、Object)
文章目录: 1.控制器controller方法的返回值 1.1 返回值类型:ModelAndView 1.2 返回值类型:String(这里的String是视图) 1.2.1 控制器类 1.2.2 s ...
- java gettext返回值_012-关于EditText中的getText()方法的返回值类型以及string的转换问题(转)...
EditText中的getText()方法的返回值为CharSequence,如果我们想要获得string类型数据的话,需要在后边加上.toString 另外,String类型转为int:Intege ...
- 获取可视区域高度赋值给div(解决document.body.clientHeight的返回值为0的问题)
获取可视区域高度赋值给div(解决document.body.clientHeight的返回值为0的问题) 参考文章: (1)获取可视区域高度赋值给div(解决document.body.client ...
最新文章
- linux跨主机复制文件
- 无法使用_解决kali linux 2020 安装完后发现无法使用 ifconfig
- 【Maven3教程】Maven多工程、多模块
- Python3 定向爬虫之“抓取糗事百科图片”
- helm快速部署一个nginx应用并更改service类型为NodePort、自定义Chart的发布
- 中国电子学会python等级考试一级
- 计算机软件基础第四版,《计算机软件技术基础》徐士良(第4版)课后习题答案详解|复习笔记...
- Java基础002 Java9开发环境搭建(Win10平台)
- 视频教程-R语言数据挖掘-模型评估篇-大数据
- 破解Access(*.mdb)目前所有版本的密码
- SourceOffsite安装配置
- 不要签名证书将网页打包封装成苹果APP,无需苹果企业签名,IPA证书签名,ios签名证书,免越狱安装
- 工程师结婚还要加班,都是鹿晗干的好事
- 无法启动正在运行的oracle,Oracle侦听器未运行,无法启动
- 信号与系统学习笔记(大纲)
- 计算机xp上网运行很慢,如何解决WinXP打开我的电脑很慢的问题?
- word-spacing无效
- 为什么子进程要继承处理器亲缘性?
- 快速搭建日志系统——ELK STACK
- 谷歌输入法 GBoard for Android 终于支持中文输入了
热门文章
- Togu Audio Line推出最新版本的TAL-BassLine-101插件 支持M1芯片
- 智能翻译软件—人人译视界 for Mac
- Agenda for Mac(多功能日历管理工具)中文版
- Mac上自带的语音功能怎么用?让你的mac读给你听
- 2020杭电多校6 1006A Very Easy Graph Problem血泪史
- js课程 2-6 js如何进行类型转换及js运算符有哪些
- python中的json模块
- 磁盘阵列(RAID) 级别
- 用Java编写的简单手绘程序--原创
- Java程序员从笨鸟到菜鸟之(八十七)跟我学jquery(三)jquery动态创建元素和常用函数示例...