封装一个简单的Http请求工具类

news/2024/11/7 18:16:21/

使用了 RestTemplate、Jackson 来封装了一个简单的http请求工具类,方便后续使用


<!--jackson依赖 2.11.1 版本-->
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId>
</dependency>
/*** http工具类*/
public class HttpUtil {/** Rest template */private final RestTemplate restTemplate;/*** Http util** @since 1.0.0*/public HttpUtil() {this.restTemplate = createRestTemplate();}/*** Http util** @param restTemplate rest template* @since 1.0.0*/public HttpUtil(RestTemplate restTemplate) {this.restTemplate = restTemplate;}/*** Create rest template** @return the rest template* @since 1.0.0*/private RestTemplate createRestTemplate() {RestTemplate restTemplate = new RestTemplate();List<HttpMessageConverter<?>> converters = new ArrayList<>(2);MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM));converters.add(converter);List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();converters.addAll(messageConverters);restTemplate.setMessageConverters(converters);return restTemplate;}/*** Get** @param <T>           parameter* @param url           url* @param headers       headers* @param requestObject request object* @param responseType  response type* @return the t* @since 1.0.0*/public <T> T get(String url, Map<String, String> headers, Object requestObject, Class<T> responseType) {return sendRequest(url, HttpMethod.GET, headers, requestObject, responseType);}/*** Get** @param <T>           parameter* @param url           url* @param requestObject request object* @param responseType  response type* @return the t* @since 1.0.0*/public <T> T get(String url, Object requestObject, Class<T> responseType) {return sendRequest(url, HttpMethod.GET, null, requestObject, responseType);}/*** Get** @param <T>          parameter* @param url          url* @param responseType response type* @return the t* @since 1.0.0*/public <T> T get(String url, Class<T> responseType) {return sendRequest(url, HttpMethod.GET, null, null, responseType);}/*** Post** @param <T>           parameter* @param url           url* @param headers       headers* @param requestObject request object* @param responseType  response type* @return t t* @since 1.0.0*/public <T> T post(String url, Map<String, String> headers, Object requestObject, Class<T> responseType) {return sendRequest(url, HttpMethod.POST, headers, requestObject, responseType);}/*** Post** @param <T>           parameter* @param url           url* @param requestObject request object* @param responseType  response type* @return the t* @since 1.0.0*/public <T> T post(String url, Object requestObject, Class<T> responseType) {return sendRequest(url, HttpMethod.POST, null, requestObject, responseType);}/*** Post** @param <T>          parameter* @param url          url* @param responseType response type* @return the t* @since 1.0.0*/public <T> T post(String url, Class<T> responseType) {return sendRequest(url, HttpMethod.POST, null, null, responseType);}/*** Send request** @param <T>           parameter* @param url           url* @param method        method* @param headers       headers* @param requestObject request object* @param responseType  response type* @return the t* @since 1.0.0*/public <T> T sendRequest(String url, HttpMethod method,Map<String, String> headers,Object requestObject,Class<T> responseType) {HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setContentType(MediaType.APPLICATION_JSON);if (headers != null) {headers.forEach(httpHeaders::add);}HttpEntity<Object> httpEntity = new HttpEntity<>(requestObject, httpHeaders);ResponseEntity<T> responseEntity = this.restTemplate.exchange(url, method, httpEntity, responseType);return responseEntity.getBody();}}

http://www.ppmy.cn/news/921534.html

相关文章

第五章 BIOS设置与硬盘分区

BIOS 概念&#xff1a;基本输入输出系统&#xff0c;固化在主板上只读存储器的程序 组成&#xff1a;基本输入输出程序&#xff0c;系统信息设置程序&#xff0c;开机加电自检程序&#xff0c;系统启动自检系统 特点&#xff1a;存储在BOM中&#xff0c;只能被读取不能被更改…

BIOS知识枝桠——PCD

PCD PCD OverviewPCD TYPESPCD LIBRARY PCD instrumentFixAtBuild PCD SYNTAXPCD SOFTWAREFixed PCD AutoGen CodeDYNAMIC PCD Special PCD PCD Overview PCD的主要目的就是把代码里面的可配置选项抽取出来&#xff0c;抽取出来的好处是倘若平台真的需要一些配置的时候&#x…

BIOS-SMI Introduction

了解SMI之前先了解一些基本的知识。 1.0 SYSTEM MANAGEMENT MODE OVERVIEW SMM是一个特定的操作模式&#xff0c;用于处理系统级的功能。比如&#xff1a;Power management, system hardware control, special OEM designed code . 它被设计成只给system firmware 使用&#…

【BIOS/UEFI】PCD配置和使用

概念 PCD&#xff08;Platform Configuration Database&#xff0c;平台配置数据&#xff09;就是抽取出代码中可配置的数据而不修改源代码。类似于C语言中的宏&#xff0c;降低了代码维护的工作量&#xff0c;增加了可复用性。不同于宏的是&#xff0c;有些PCD&#xff08;动态…

BIOS的BDS阶段解析

1、概述 BDS全称&#xff1a;Boot Dev Select&#xff08;启动设备选择) 主要功能是加载并连接驱动程序&#xff0c;管理并启动引导项。在引导操作系统之前会初始化设备&#xff08;USB键盘鼠标&#xff0c;VGA设备等&#xff09;&#xff0c;然后通过Variable功能来控制启动顺…

BIOS知识点--修改SMBIOS

以下函数实现的是修改SMBIOS中TYPE1的Product Name值 为LLLLL 主要是使用到了EFI_SMBIOS_PROTOCOL中的一些函数

第五章BIOS设置与硬盘分区

第五章 BIOS 设置与硬盘分区 1、主板BIOS的设置 BIOS负责开机时对系统中各个硬件进行初始化设置和测试&#xff0c;以确保系统能正常工作&#xff0c;是电脑硬件与软件程序之间的一座桥梁。 电脑在开机启动之前&#xff0c;首先要检查BIOS&#xff0c;它是计算机最底层的模板…

忘了BIOS密码不用慌 多种方法可解决

天无绝人之路,既然设置有密码,那我们想办法把它解开或恢复成默认值……  如果你设置了CMOS密码而又忘记,或者单位里的其他同事设置了CMOS密码又没告诉你,但你却很想进BIOS程序进行设置和修改,这时没有密码是很难的。但是,天无绝人之路,既然设置有密码,那我们想办法把…