spring框架提供的RestTemplate类可用于在应用中调用rest服务,它简化了与http服务的通信方式,统一了RESTful的标准,封装了http链接, 我们只需要传入url及返回值类型即可。相较于之前常用的HttpClient,RestTemplate是一种更优雅的调用RESTful服务的方式。该类主要用到的函数有:exchange、getForEntity、postForEntity等。我主要用的是后面两个函数,来执行发送get跟post请求。

    首先是RestTemplateUtil类

package cn.eangaie.demo.util;

 

import com.alibaba.fastjson.JSONObject;

import org.springframework.http.*;

import org.springframework.stereotype.Component;

import org.springframework.util.MultiValueMap;

import org.springframework.web.client.RestTemplate;

 

import java.util.Map;

 

/**

* @author Eangaie

* @date 2018/10/12 0012 下午 14:53

* 网络请求,RestTemplate工具类

*/

@Component

public
class RestTemplateUtil {

 

private RestTemplate restTemplate;

 

/**

* 发送GET请求

* @param url

* @param param

* @return

*/

public String GetData(String url, Map<String,String> param){

restTemplate=new RestTemplate();

// 请勿轻易改变此提交方式,大部分的情况下,提交方式都是表单提交

HttpHeaders headers =
new HttpHeaders();

headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

return restTemplate.getForEntity(url,String.class,param).getBody();

 

}

 

/**

* 发送POST-JSON请求

* @param url

* @param param

* @return

*/

public String PostJsonData(String url,JSONObject param){

restTemplate=new RestTemplate();

HttpHeaders headers =
new HttpHeaders();

headers.setContentType(MediaType.APPLICATION_JSON_UTF8);

headers.add("Accept", MediaType.APPLICATION_JSON.toString());

HttpEntity<JSONObject> requestEntity =
new HttpEntity<JSONObject>(param, headers);

return restTemplate.postForEntity(url,param,String.class).getBody();

}

 

/**

* 发送POST 表单请求

* @param url

* @param param

* @return

*/

public String PostFormData(String url,MultiValueMap<String,String> param){

restTemplate=new RestTemplate();

// 请勿轻易改变此提交方式,大部分的情况下,提交方式都是表单提交

HttpHeaders headers =
new HttpHeaders();

headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

return restTemplate.postForEntity(url,param,String.class).getBody();

 

}

}

 

    这里编写了三个函数,一个是GetData(), 用来发送GET请求,使用方法是问号传参,并把参数的key作为替代,在map中填入。

PostJsonData ()是用来发送json类型数据的POST请求。需要传入url链接,和一个JSONObject对象。PostFormData()函数是用来发送表单类型

的POST请求。 使用方式我也编写了一些简单的控制器。代码如下。

@GetMapping("testGetData")

public String testGetData(){

String url="http://localhost:81/sample/GetData?msg={msg}&author={author}";

Map<String,String> param=new HashMap<>();

param.put("msg","Hello");

param.put("author","彦杰");

return restTemplateUtil.GetData(url,param);

}

 

@GetMapping("testPostJsonData")

public String testPostJsonData(){

String url="http://localhost:81/sample/PostData";

JSONObject jsonObject=new JSONObject();

jsonObject.put("msg","hello");

jsonObject.put("author","彦杰");

return restTemplateUtil.PostJsonData(url,jsonObject);

 

}

 

@GetMapping("testPostFormData")

public String testPostFormData(){

String url="http://localhost:81/sample/PostFormData";

MultiValueMap<String,String> param=new LinkedMultiValueMap<>();

param.add("msg","Hello");

param.add("author","彦杰");

return restTemplateUtil.PostFormData(url,param);

 

}

 

@GetMapping("GetData")

public String getData(String msg, String author){

return msg+" "+author;

}

 

@PostMapping("PostData")

public String postData(@RequestBody JSONObject jsonObject){

String msg=jsonObject.getString("msg");

String author=jsonObject.getString("author");

return msg+" "+author;

}

 

@PostMapping("PostFormData")

public String PostFormData(String msg,String author){

return msg+" "+author;

}

@GetMapping("testGetData")

public String testGetData(){

String url="http://localhost:81/sample/GetData?msg={msg}&author={author}";

Map<String,String> param=new HashMap<>();

param.put("msg","Hello");

param.put("author","彦杰");

return restTemplateUtil.GetData(url,param);

}

 

@GetMapping("testPostJsonData")

public String testPostJsonData(){

String url="http://localhost:81/sample/PostData";

JSONObject jsonObject=new JSONObject();

jsonObject.put("msg","hello");

jsonObject.put("author","彦杰");

return restTemplateUtil.PostJsonData(url,jsonObject);

 

}

 

@GetMapping("testPostFormData")

public String testPostFormData(){

String url="http://localhost:81/sample/PostFormData";

MultiValueMap<String,String> param=new LinkedMultiValueMap<>();

param.add("msg","Hello");

param.add("author","彦杰");

return restTemplateUtil.PostFormData(url,param);

 

}

 

@GetMapping("GetData")

public String getData(String msg, String author){

return msg+" "+author;

}

 

@PostMapping("PostData")

public String postData(@RequestBody JSONObject jsonObject){

String msg=jsonObject.getString("msg");

String author=jsonObject.getString("author");

return msg+" "+author;

}

 

@PostMapping("PostFormData")

public String PostFormData(String msg,String author){

return msg+" "+author;

}

Springboot+RestTemplate 简单使用的更多相关文章

  1. SpringBoot+RestTemplate 简单包装

        RestTemplate设计是为了Spring更好的请求并解析Restful风格的接口返回值而设计的,通过这个类可以在请求接口时直接解析对应的类.     在SpringBoot中对这个类进行 ...

  2. springboot+thymeleaf简单使用

    关于springboot想必很多人都在使用,由于公司项目一直使用的是SpringMVC,所以自己抽空体验了一下springboot的简单使用. 环境搭建 springbooot的环境搭建可以说很灵活, ...

  3. Springboot接口简单实现生成MySQL插入语句

    Springboot接口简单实现调用接口生成MySQL插入语句 在实际测试中,有这样一个需求场景,比如:在性能压力测试中,可能需要我们事先插入数据库中一些相关联的数据. 我们在实际测试中,遇到问题,需 ...

  4. SpringBoot 搭建简单聊天室

    SpringBoot 搭建简单聊天室(queue 点对点) 1.引用 SpringBoot 搭建 WebSocket 链接 https://www.cnblogs.com/yi1036943655/p ...

  5. SpringBoot 发送简单邮件

    使用SpringBoot 发送简单邮件 1. 在pom.xml中导入依赖 <!--邮件依赖--> <dependency> <groupId>org.springf ...

  6. SpringBoot入门 简单搭建和使用

    前言 差不多两年前,那个时候我准备要做毕业设计了,才第一次知道java有框架这种东西,在网上找了好多SSM的教程,那会儿真的是Spring+SpringMVC+MyBatis搭建的,印象极深的是还要写 ...

  7. Element ui结合springboot的简单实战

    Eelment UI简单实战 前端开发 1 创建项目,导入element ui(略) 2 大致设计出想要的效果,如下 3 创建包 根据设计的大致模样在项目的components中创建对应的包,方便以后 ...

  8. Java Springboot webSocket简单实现,调接口推送消息到客户端socket

    Java Springboot webSocket简单实现,调接口推送消息到客户端socket 后台一般作为webSocket服务器,前台作为client.真实场景可能是后台程序在运行时(满足一定条件 ...

  9. spring-boot RestTemplate 连接池

    以前我们项目都是基于Apache HttpClient 连接池进行web 接口调用,后来用spring-boot, 发现 RestTemplate 挺好用. 简单介绍下: 什么是RestTemplat ...

随机推荐

  1. 常用算法1 - 快速排序 & 二分查找

    1. 二分查找法: 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回对应的数组下标,没有找到返回-1. 二分查找法要求数据为一组有序的序列(大到小 ...

  2. mongodb自学

    http://www.runoob.com/mongodb/mongodb-databases-documents-collections.html

  3. JS中的拖动之—— ondragstart,ondrag,ondragend , ondragenter , ondragover , ondragleave, ondrop 的区别

    关于 HTML5 中的拖动功能. 更多信息可以查看我们 HTML 教程中的 HTML5 拖放.以下 我只做一下简介. 1 如果你想让元素变得可拖动,首先 你得对元素设置 draggable 属性 此属 ...

  4. Sql-Server触发器,根据条件匹配另一个表中的字段

    USE [CDM] GO /****** Object: Trigger [dbo].[UpdateAkisFlight] Script Date: 2018/6/14 16:43:29 ****** ...

  5. 如果你的shiro没学明白,那么应该看看这篇文章,将shiro整合进springboot

    最近在做项目的时候需要用到shiro做认证和授权来管理资源 在网上看了很多文章,发现大多数都是把官方文档的简介摘抄一段,然后就开始贴代码,告诉你怎么怎么做,怎么怎么做 相信很多小伙伴即使是跟着那些示例 ...

  6. Tips——RN canvas缩放处理

    一.关于canvas缩放 canvas图像缩放处理有两种思路: ctx.scale(),对整个canvas进行重绘,会导致每次缩放都重新加载,影响体验效果 在canvas外包层view,直接对外层的v ...

  7. CSS中vertical-align的默认值baseline的理解

    写在前面的话 在学校业余学习了一个月的CSS,人生中第一篇博客就献给CSS了,欢迎大家指正文章中不正确的地方,在此感谢.在尝试开始写博客的时候查了好多资料,原本以为写自己熟悉的知识的博客很容易,没想到 ...

  8. 【代码笔记】iOS-cell折叠

    一,效果图. 二,工程图. 三,代码. AppDelegate.h #import <UIKit/UIKit.h> //加入头文件 #import "myQQView.h&quo ...

  9. Docker for Windows(五)实践搭建SqlServer服务&执行数据库操作

    上一篇我们已经搭建了一个mysql数据库服务了:Docker for Windows(四)实践搭建&删除MySQL服务,发现用Docker确实是方便且容易,但上一篇主要是服务的搭建删除等基础操 ...

  10. vue实现上传上删除压缩图片

    <script> import {Config} from '@/config.js' import {mapState} from 'vuex' import {LocalData, t ...