springboot中基于RestTemplate 类 实现调用第三方API接口【POST版本】
https://blog.csdn.net/Drug_/article/details/135111675
这一篇的升级版
还是先配置文件
package com.init.config;import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.ssl.TrustStrategy;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import javax.net.ssl.SSLContext;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;/*** restTemplate配置类* @author Json*/@Configuration
public class RestTemplateConfig {@Beanpublic RestTemplate restTemplate(ClientHttpRequestFactory factory){return new RestTemplate(factory);}@Beanpublic ClientHttpRequestFactory simpleClientHttpRequestFactory(){HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();factory.setConnectTimeout(15000);factory.setReadTimeout(5000);return factory;}public static HttpComponentsClientHttpRequestFactory generateHttpRequestFactory()throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException{TrustStrategy acceptingTrustStrategy = (x509Certificates, authType) -> true;SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build();SSLConnectionSocketFactory connectionSocketFactory = new SSLConnectionSocketFactory(sslContext, new NoopHostnameVerifier());HttpClientBuilder httpClientBuilder = HttpClients.custom();httpClientBuilder.setSSLSocketFactory(connectionSocketFactory);CloseableHttpClient httpClient = httpClientBuilder.build();HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();factory.setHttpClient(httpClient);return factory;}
}
工具类
package com.init.utils;import com.alibaba.fastjson.JSONObject;
import com.kuaijing.init.config.RestTemplateConfig;
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.http.converter.StringHttpMessageConverter;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;import java.nio.charset.StandardCharsets;
import java.util.List;/****/
public class HttpUtil {/*** 调用第三方服务器接口 能用于上传 附件** @param url 路由* @param jsonObject 参数* @return 响应体里的数据*/public static JSONObject doPostFormData(String url, MultiValueMap<String, Object> jsonObject) throws Exception {RestTemplate restTemplate = new RestTemplate(RestTemplateConfig.generateHttpRequestFactory());//此处加编码格式转换restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);// httpHeaders.setContentType(org.springframework.http.MediaType.APPLICATION_JSON_UTF8);// httpHeaders.put("Authorization",stringList);HttpEntity httpEntity = new HttpEntity(jsonObject, httpHeaders);//访问第三方服务器ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);return JSONObject.parseObject(exchange.getBody(), JSONObject.class);}/*** 调用第三方服务器接口 能用于上传 附件** @param url 路由* @param jsonObject 参数* @param httpHeaders 请求头* @return 响应体里的数据*/public static JSONObject doPostFormData(String url, MultiValueMap<String, Object> jsonObject, HttpHeaders httpHeaders) throws Exception {RestTemplate restTemplate = new RestTemplate(RestTemplateConfig.generateHttpRequestFactory());//此处加编码格式转换restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));httpHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);HttpEntity httpEntity = new HttpEntity(jsonObject, httpHeaders);//访问第三方服务器ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);return JSONObject.parseObject(exchange.getBody(), JSONObject.class);}/*** 调用第三方服务器接口 能用于上传 附件** @param url 路由* @param jsonObject 参数* @return 返回相应所有参数*/public static ResponseEntity<String> doPostFormDataResponse(String url, MultiValueMap<String, Object> jsonObject) throws Exception {RestTemplate restTemplate = new RestTemplate(RestTemplateConfig.generateHttpRequestFactory());//此处加编码格式转换restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);// httpHeaders.setContentType(org.springframework.http.MediaType.APPLICATION_JSON_UTF8);// httpHeaders.put("Authorization",stringList);HttpEntity httpEntity = new HttpEntity(jsonObject, httpHeaders);//访问第三方服务器return restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);}/*** 调用第三方服务器接口 没有附件上传的那种** @param url 路由* @param jsonObject 参数* @param stringList 头部参数* @return*/public static JSONObject doPostJson(String url, JSONObject jsonObject, List<String> stringList) throws Exception {RestTemplate restTemplate = new RestTemplate(RestTemplateConfig.generateHttpRequestFactory());//此处加编码格式转换restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setContentType(org.springframework.http.MediaType.APPLICATION_JSON_UTF8);httpHeaders.put("Authorization", stringList);HttpEntity httpEntity = new HttpEntity(jsonObject, httpHeaders);//访问第三方服务器ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);return JSONObject.parseObject(exchange.getBody(), JSONObject.class);}public static JSONObject doPostJson(String url, JSONObject jsonObject) throws Exception {RestTemplate restTemplate = new RestTemplate(RestTemplateConfig.generateHttpRequestFactory());//此处加编码格式转换restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));HttpHeaders httpHeaders = new HttpHeaders();httpHeaders.setContentType(org.springframework.http.MediaType.APPLICATION_JSON_UTF8);//httpHeaders.put("Authorization",stringList);HttpEntity httpEntity = new HttpEntity(jsonObject, httpHeaders);//访问第三方服务器ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);return JSONObject.parseObject(exchange.getBody(), JSONObject.class);}}相关文章:
springboot中基于RestTemplate 类 实现调用第三方API接口【POST版本】
https://blog.csdn.net/Drug_/article/details/135111675 这一篇的升级版 还是先配置文件 package com.init.config;import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.impl.clie…...
编程器固件修改教程
首发csdn,转载请说明出处,保留一切权益。 关于编程器固件 所谓编程器固件是用编程器读取嵌入式设备的FLASH存储数据生成的文件,类似于直接用工具复制整个硬盘 编程器固件与普通固件的差异 编程器固件是用特定的结构(按顺序、大小)将一些文件系…...
Python从原Excel表中抽出数据存入同一文件的新的Sheet(附源码)
python读取excel数据。Python在从原Excel表中抽出数据并存储到同一文件的新的Sheet中的功能,充分展示了其在数据处理和自动化操作方面的强大能力。这一功能不仅简化了数据迁移的过程,还提高了数据处理的效率,为数据分析和管理工作带来了极大的…...
计算机网络实验六:路由信息协议RIP
目录 6 实验六:路由信息协议RIP 6.1 实验目的 6.2 实验步骤 6.2.1 构建网络拓扑、配置各网络设备 6.2.2 网络功能验证测试 6.3 实验总结 6 实验六:路由信息协议RIP 6.1 实验目的 (1)学习RIP协议的工作原理和特点 (2)学习如何选择最短路径路由。 (3)进一步掌握…...
MySQL数据库备份策略与实践详解
目录 引言 一、MySQL数据库备份的重要性 (一)数据丢失的原因 (二)数据丢失的后果 二、MySQL备份类型 (一)根据数据库状态 (二)根据数据的完整性 (三)…...
String类相关oj练习
前言: 此处练习对应博客文章:公主,王子,请点击 1.第一次只出现一次的字符 做题首先看清要求和提示: 给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不…...
【Linux】进程实践项目 —— 自主shell编写
送给大家一句话: 不管前方的路有多苦,只要走的方向正确,不管多么崎岖不平,都比站在原地更接近幸福。 —— 宫崎骏《千与千寻》 自主shell命令编写 1 前言2 项目实现2.1 创建命令行2.2 获取命令2.3 分割命令2.4 运行命令 3 源代码…...
基于SpringBoot和Vue的学生笔记共享平台的设计与实现
今天要和大家聊的是一款基于SpringBoot和Vue的学生笔记共享平台的设计与实现 !!! 有需要的小伙伴可以通过文章末尾名片咨询我哦!!! 💕💕作者:李同学 💕&…...
C++心决之命名空间、重载函数和引用
目录 1. C关键字(C98) 2. 命名空间 2.1 命名空间定义 2.2 命名空间使用 3. C输入&输出 4. 缺省参数 4.1 缺省参数概念 4.2 缺省参数分类 5. 函数重载 5.1 函数重载概念 5.2 C支持函数重载的原理--名字修饰(name Mangling) 6. 引用 6.1 引用概念 6.2 引用特性…...
higress使用了解
higress使用了解 了解下 http-echo、httpbin 镜像使用 未按文档实际搭建,但大致是这样 官方文档:https://higress.io/zh-cn/docs/overview/what-is-higress 了解:利用sealos快速安装kubernetes集群:https://note.youdao.com/s…...
Swagger3探索之游龙入海
引言 后端开发中常用的接口调用工具一般使用Postman、ApiPost工具,但后期需要与前端联调,要补充接口文档花费大量时间,此时Swagger3应运而生,大大提高沟通交流的效率。 引用依赖 <!-- Swagger3 调用方式 http://ip:port/swa…...
javaWeb项目-学生考勤管理系统功能介绍
项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 1、JAVA技术 JavaSc…...
云备份项目认识、环境搭建以及所使用的库的介绍
一、云备份认识 将本地计算机一个受监管的文件夹的文件上传到服务器中,有服务器组织,客户端可以通过网页将文件查看并且下载下来,下载过程支持断点续传功能,并且服务器会对上传的文件进行热点管理,长时间没人访问的文…...
汇编语言第四版-王爽第2章 寄存器
二进制左移四位,相当于四进制左移一位。 debug命令实操,win11不能启动,需要配置文件 Windows64位系统进入debug模式_window10系统64位怎么使用debugger-CSDN博客...
MoonBit MeetUp回顾——张正、宗喆:编程语言在云原生与区块链领域的技术探索
宗喆和张正分别给我们带了 KCL 相关的最新进展,由蚂蚁集团开发的 Rust 编写的开源 DSL,目标是优化云原生策略配置和用户体验。它通过引入动态配置管理、配置校验和基础设施抽象等核心概念,解决开发者认知负担、配置膨胀和标准化工具缺乏的问题…...
云原生靶场kebernetesGoat、Metarget
靶场 文章目录 靶场kebernetesGoat靶场安装Docker in DockerSSRF漏洞容器逃逸到主系统Docker CIS 基线分析Kubernetes CIS 安全基线分析分析被部署挖矿软件的容器镜像获取环境信息Hidden in layersRBAC最低权限配置错误使用 Sysdig Falco 进行运行时安全监控和检测 Metarget ke…...
【3D目标检测】Det3d—SE-SSD模型训练(前篇):KITTI数据集训练
SE-SSD模型训练 1 基于Det3d搭建SE-SSD环境2 自定义数据准备2.1 自定义数据集标注2.2 训练数据生成2.3 数据集分割 3 训练KITTI数据集3.1 数据准备3.2 配置修改3.3 模型训练 1 基于Det3d搭建SE-SSD环境 Det3D环境搭建参考:【3D目标检测】环境搭建(OpenP…...
k8s1.28.8版本安装prometheus并持久化数据
本文参考 [k8s安装prometheus并持久化数据_/prometheus-config-reloader:-CSDN博客](https://blog.csdn.net/vic_qxz/article/details/119598466)前置要求: 已经部署了NFS或者其他存储的K8s集群. 这里注意networkpolicies网络策略问题,可以后面删除这个策略&#x…...
Mybatis-特殊SQL的执行
1. 模糊查询 在MyBatis中进行模糊查询时,有以下三种常见的实现方式: 1.1. 错误示范 先来个准备操作,并做一个错误示例 根据姓名,模糊查询用户,(x小x) 更新数据表 SQLMapper.java package com.sakurapaid.mybatis3…...
金融衍生品市场
金融衍生品市场 衍生金融品的作用衍生金融工具远期合约期货合约期权 衍生金融品的作用 套期保值(Hedging) 组合多头头寸(long position)与空头头寸(short position)例:股票与股指期货 投机 衍生金融工具 远期合约 定义:在将来…...
OLED屏幕清屏函数全解析:从基础到局部刷新(附代码示例)
OLED屏幕清屏函数全解析:从基础到局部刷新(附代码示例) 第一次接触OLED开发时,最让我困惑的就是屏幕刷新机制。记得当时为了调试一个简单的数字显示功能,反复调用全屏刷新导致屏幕闪烁严重,用户体验极差。后…...
新手福音:用快马平台生成Anaconda环境下的Python数据分析示例代码
作为一名刚接触Python数据分析的新手,我最近在学习Anaconda环境下的数据处理和可视化。刚开始配置环境和写代码时,经常被各种报错搞得手忙脚乱。后来发现了InsCode(快马)平台,它帮我快速生成了一个完整的示例项目,让我对数据分析流…...
XC泰山服务器麒麟V10系统安装全流程解析
1. 准备工作:了解XC泰山服务器与麒麟V10系统 在开始安装之前,我们需要先了解一下XC泰山服务器和麒麟V10操作系统的基本情况。XC泰山服务器是国内自主研发的高性能服务器,采用ARM架构处理器,具有高性能、低功耗的特点。而麒麟V10则…...
解锁Navicat密码:突破加密限制的开源解密工具
解锁Navicat密码:突破加密限制的开源解密工具 【免费下载链接】navicat_password_decrypt 忘记navicat密码时,此工具可以帮您查看密码 项目地址: https://gitcode.com/gh_mirrors/na/navicat_password_decrypt 当数据库连接密码被Navicat加密保存却无法记起&…...
第10章 RTOS 感知调试(OpenOCD)
第10章 RTOS 感知调试 导读:在嵌入式开发中,RTOS(实时操作系统)的使用非常普遍。然而当多个线程并发执行时,传统的单线程调试方式无法感知任务切换和线程上下文,给问题定位带来极大困难。OpenOCD 内置了对十余种主流 RTOS 的线程感知调试支持,能够在暂停目标时自动识别所…...
3分钟完成Axure RP中文界面汉化:终极完整指南
3分钟完成Axure RP中文界面汉化:终极完整指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包,不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axu…...
华硕笔记本性能困境突破:G-Helper工具的全方位优化方案
华硕笔记本性能困境突破:G-Helper工具的全方位优化方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地…...
医学影像组学实战:Pyradiomics YAML配置文件全解析(附完整示例)
医学影像组学实战:Pyradiomics YAML配置文件全解析(附完整示例) 在医学影像分析领域,特征提取是构建精准诊断模型的关键步骤。Pyradiomics作为开源的医学影像组学工具包,通过YAML配置文件提供了高度灵活的特征提取方案…...
实战指南:如何用FAISS和GPT-4o-mini构建高效RAG系统(附开源代码)
实战指南:如何用FAISS和GPT-4o-mini构建高效RAG系统(附开源代码) 在人工智能领域,检索增强生成(RAG)技术正迅速成为连接大型语言模型与专业知识的桥梁。不同于传统LLM仅依赖预训练知识,RAG系统通…...
告别串口!STM32F105RCT6的ITM调试秘籍:从零配置到华为/高通项目级日志封装
STM32F105RCT6 ITM调试实战:企业级日志系统设计与性能优化 在嵌入式开发领域,调试效率直接影响项目进度和质量。传统串口调试方式虽然简单易用,但在处理复杂企业级项目时往往显得力不从心。本文将深入探讨基于STM32F105RCT6的ITM调试技术&…...
