2019独角兽企业重金招聘Python工程师标准>>>

import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
import java.util.Optional;import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.lang.Nullable;
import org.springframework.web.client.RestTemplate;import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;/*** Rest客户端* * @author heaven**/
@Builder
@Slf4j
@NoArgsConstructor
@AllArgsConstructor
public class RestClient {/*** 请求方法*/HttpMethod httpMethod;@Builder.DefaultRestTemplate restTemplate = new RestTemplate();public void setCharsets() {List<HttpMessageConverter<?>> list = restTemplate.getMessageConverters();for (HttpMessageConverter<?> httpMessageConverter : list) {if(httpMessageConverter instanceof StringHttpMessageConverter) {((StringHttpMessageConverter) httpMessageConverter).setDefaultCharset(StandardCharsets.UTF_8);}}}/*** 发起rest请求* @param url 请求地址* @param body 请求体,对post,put,delete等有请求体有效,对get无效* @param responseType 设置相应结果绑定对象* @param uriVariables 请求变量,用于组装请求url* @return 响应结果*/public <T> Optional<T> restRequest(String url, @Nullable Object body, Class<T> responseType,Map<String, ?> uriVariables) {T response = null;switch (httpMethod) {case GET:response = restTemplate.getForObject(url, responseType, uriVariables);break;case POST:response = restTemplate.postForObject(url, body, responseType, uriVariables);break;default:log.error("not support method");}return Optional.ofNullable(response);}public String restRequest(String url, String request) {String result = null;/*** 添加headers* 所有请求必须携带* */HttpHeaders requestHeaders = new HttpHeaders();requestHeaders.add("需要携带的头文件", "不需要,可以不写");HttpEntity<String> requestEntity = new HttpEntity<String>(null, requestHeaders);if("post".equals(request)) {result = restTemplate.exchange(url, HttpMethod.POST, requestEntity, String.class).getBody();}if("get".equals(request)) {result = restTemplate.exchange(url, HttpMethod.GET, requestEntity, String.class).getBody();}return result;}
}

转载于:https://my.oschina.net/u/4100388/blog/3032059

基于spring boot调用接口的工具类相关推荐

  1. spring boot 文件上传工具类(bug 已修改)

    以前的文件上传都是之前前辈写的,现在自己来写一个,大家可以看看,有什么问题可以在评论中提出来. 写的这个文件上传是在spring boot 2.0中测试的,测试了,可以正常上传,下面贴代码 第一步:引 ...

  2. java图片加水印上传工具类_基于Spring Boot实现图片上传/加水印一把梭操作

    文章共537字,阅读大约需要 2分钟 ! 概述 很多网站的图片为了版权考虑都加有水印,尤其是那些图片类网站.自己正好最近和图片打交道比较多,因此就探索了一番基于 Spring Boot这把利器来实现从 ...

  3. java restful接口开发实例_实战:基于Spring Boot快速开发RESTful风格API接口

    写在前面的话 这篇文章计划是在过年期间完成的,示例代码都写好了,结果亲戚来我家做客,文章没来得及写.已经很久没有更新文章了,小伙伴们,有没有想我啊.言归正传,下面开始,今天的话题. 目标 写一套符合规 ...

  4. 基于Spring Boot 2 和 Vue.js 2 的 食品科学与工程学院网站的设计与实现

    摘要 互联网具有传播信息容量大.形态多样.迅速方便.自由和交互等特点,已经发展成为新的传播媒体,现在很多的大学和社会其他部门都已经建立了网站,通过计算机网络实现宣传.交流及资源的整合.建立学校网站有以 ...

  5. 基于Spring Boot 2.5.1 微服务框架发布(Eurynome Cloud )

    企业级技术中台微服务架构与服务能力开发平台(Eurynome Cloud ) Eurynome Cloud是一款企业级技术中台微服务架构与服务能力开发平台.基于Spring Boot 2.5.1.Sp ...

  6. 一个不错的基于Spring boot+Security+Redis+MySql实现权限登录和反爬虫的脚手架

    介绍 一个基于Spring boot 2.4.2.JDK 1.8.Security.防恶意请求技术实现的前后端分离的脚手架,可以为开发人员省去前期框架调研和搭建的成本. 软件架构 Spring boo ...

  7. Java生成二维码的几种实现方式(基于Spring Boot)

    本文将基于Spring Boot介绍两种生成二维码的实现方式,一种是基于Google开发工具包,另一种是基于Hutool来实现: 为了方便理解二维码的实际应用场景,举一些例子! (1)进销存系统 想必 ...

  8. SpringBoot系列(22):Java生成二维码的几种实现方式(基于Spring Boot)

    原文链接:http://www.fightjava.com/web/index/blog/article/82 在一些企业级应用系统中,有时候需要为产品或者商品生成特定的专属二维码,以供一些硬件设备或 ...

  9. 基于Spring Boot+Cloud构建微云架构

    链接:my.oschina.net/u/3636867/blog/1802517 前言 首先,最想说的是,当你要学习一套最新的技术时,官网的英文文档是学习的最佳渠道.因为网上流传的多数资料是官网翻译而 ...

最新文章

  1. gdb命令中attach使用
  2. OceanBase开源,11张图带你了解分布式数据库的核心知识
  3. Golang 特性简介
  4. 喀什市2021年高考成绩查询,新疆喀什地区2021高考文化生分数线
  5. UITableViewCell点击不能push解决方法
  6. 消防管件做的机器人图片_看图猜管件
  7. BZOJ1108 [POI2007]天然气管道Gaz
  8. JAVA数据类型转换大全
  9. 计算机配置无线网卡在哪能找到,台式机无线网卡驱动位置在哪
  10. 微信小程序 自定义日期选择器
  11. 计算机上如何设置访问密码忘了怎么办,电脑设置的密码忘记了怎么办
  12. sd卡格式化fat32格式_如何在Windows上使用FAT32格式化大于32GB的USB驱动器
  13. IC、FPGA验证学习
  14. 【快应用】菜单遮挡内容?教你一招快速搞定!
  15. 项目设计Andriod部分-做一个学习类App-1
  16. [MICO开发帖]MICOkit-Nucleo2.0开发连载贴——1、Micoder开发环境汉化
  17. 主程的晋升攻略(2):技术篇概要
  18. 2.Nginx Docker安装Nginx
  19. ZUCC 数据库原理 卷面题
  20. socket网络编程-socket()、bind()、setsockopt()、recvfrom()、sendto()函数

热门文章

  1. LINUX符号、快捷键、正则
  2. Oracle数据库进程
  3. C# Socket使用代理 及 Http协议、Socks5协议
  4. 一位软件工程师的6年总结【转】
  5. How to Make a Computer Operating System
  6. 剑指Offer_08_跳台阶
  7. [Delphi] Webbroker ISAPI 示例说明
  8. JavaScript高级程序设计44.pdf
  9. CentOS下用yum管理软件的好处
  10. centos7 python3安装numpy_Centos7安装python3、numpy、scipy、matplotlib、pandas等