当前位置: 首页 > news >正文

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&#xff0c;转载请说明出处&#xff0c;保留一切权益。 关于编程器固件 所谓编程器固件是用编程器读取嵌入式设备的FLASH存储数据生成的文件&#xff0c;类似于直接用工具复制整个硬盘 编程器固件与普通固件的差异 编程器固件是用特定的结构(按顺序、大小)将一些文件系…...

Python从原Excel表中抽出数据存入同一文件的新的Sheet(附源码)

python读取excel数据。Python在从原Excel表中抽出数据并存储到同一文件的新的Sheet中的功能&#xff0c;充分展示了其在数据处理和自动化操作方面的强大能力。这一功能不仅简化了数据迁移的过程&#xff0c;还提高了数据处理的效率&#xff0c;为数据分析和管理工作带来了极大的…...

计算机网络实验六:路由信息协议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数据库备份的重要性 &#xff08;一&#xff09;数据丢失的原因 &#xff08;二&#xff09;数据丢失的后果 二、MySQL备份类型 &#xff08;一&#xff09;根据数据库状态 &#xff08;二&#xff09;根据数据的完整性 &#xff08;三&#xff09;…...

String类相关oj练习

前言&#xff1a; 此处练习对应博客文章&#xff1a;公主&#xff0c;王子&#xff0c;请点击​​​​​​​ 1.第一次只出现一次的字符 做题首先看清要求和提示&#xff1a; 给定一个字符串 s &#xff0c;找到 它的第一个不重复的字符&#xff0c;并返回它的索引 。如果不…...

【Linux】进程实践项目 —— 自主shell编写

送给大家一句话&#xff1a; 不管前方的路有多苦&#xff0c;只要走的方向正确&#xff0c;不管多么崎岖不平&#xff0c;都比站在原地更接近幸福。 —— 宫崎骏《千与千寻》 自主shell命令编写 1 前言2 项目实现2.1 创建命令行2.2 获取命令2.3 分割命令2.4 运行命令 3 源代码…...

基于SpringBoot和Vue的学生笔记共享平台的设计与实现

今天要和大家聊的是一款基于SpringBoot和Vue的学生笔记共享平台的设计与实现 &#xff01;&#xff01;&#xff01; 有需要的小伙伴可以通过文章末尾名片咨询我哦&#xff01;&#xff01;&#xff01; &#x1f495;&#x1f495;作者&#xff1a;李同学 &#x1f495;&…...

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 镜像使用 未按文档实际搭建&#xff0c;但大致是这样 官方文档&#xff1a;https://higress.io/zh-cn/docs/overview/what-is-higress 了解&#xff1a;利用sealos快速安装kubernetes集群&#xff1a;https://note.youdao.com/s…...

Swagger3探索之游龙入海

引言 后端开发中常用的接口调用工具一般使用Postman、ApiPost工具&#xff0c;但后期需要与前端联调&#xff0c;要补充接口文档花费大量时间&#xff0c;此时Swagger3应运而生&#xff0c;大大提高沟通交流的效率。 引用依赖 <!-- Swagger3 调用方式 http://ip:port/swa…...

javaWeb项目-学生考勤管理系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、JAVA技术 JavaSc…...

云备份项目认识、环境搭建以及所使用的库的介绍

一、云备份认识 将本地计算机一个受监管的文件夹的文件上传到服务器中&#xff0c;有服务器组织&#xff0c;客户端可以通过网页将文件查看并且下载下来&#xff0c;下载过程支持断点续传功能&#xff0c;并且服务器会对上传的文件进行热点管理&#xff0c;长时间没人访问的文…...

汇编语言第四版-王爽第2章 寄存器

二进制左移四位&#xff0c;相当于四进制左移一位。 debug命令实操&#xff0c;win11不能启动&#xff0c;需要配置文件 Windows64位系统进入debug模式_window10系统64位怎么使用debugger-CSDN博客...

MoonBit MeetUp回顾——张正、宗喆:编程语言在云原生与区块链领域的技术探索

宗喆和张正分别给我们带了 KCL 相关的最新进展&#xff0c;由蚂蚁集团开发的 Rust 编写的开源 DSL&#xff0c;目标是优化云原生策略配置和用户体验。它通过引入动态配置管理、配置校验和基础设施抽象等核心概念&#xff0c;解决开发者认知负担、配置膨胀和标准化工具缺乏的问题…...

云原生靶场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环境搭建参考&#xff1a;【3D目标检测】环境搭建&#xff08;OpenP…...

k8s1.28.8版本安装prometheus并持久化数据

本文参考 [k8s安装prometheus并持久化数据_/prometheus-config-reloader:-CSDN博客](https://blog.csdn.net/vic_qxz/article/details/119598466)前置要求: 已经部署了NFS或者其他存储的K8s集群. 这里注意networkpolicies网络策略问题&#xff0c;可以后面删除这个策略&#x…...

Mybatis-特殊SQL的执行

1. 模糊查询 在MyBatis中进行模糊查询时&#xff0c;有以下三种常见的实现方式&#xff1a; 1.1. 错误示范 先来个准备操作&#xff0c;并做一个错误示例 根据姓名&#xff0c;模糊查询用户&#xff0c;(x小x) 更新数据表 SQLMapper.java package com.sakurapaid.mybatis3…...

金融衍生品市场

金融衍生品市场 衍生金融品的作用衍生金融工具远期合约期货合约期权 衍生金融品的作用 套期保值&#xff08;Hedging&#xff09; 组合多头头寸(long position)与空头头寸(short position)例&#xff1a;股票与股指期货 投机 衍生金融工具 远期合约 定义&#xff1a;在将来…...

2、Cocos Creator 下载安装

Cocos Creator 从 v2.3.2 开始接入了全新的 Dashboard 系统&#xff0c;能够同时对多版本引擎和项目进行统一升级和管理&#xff01;Cocos Dashboard 将做为 Creator 各引擎统一的下载器和启动入口&#xff0c;方便升级和管理多个版本的 Creator。还集成了统一的项目管理及创建…...

Docker版本:18.06.1安装

1、操作系统&#xff1a;CentOS 7.5以上 2、Docker版本&#xff1a;18.06.1 1、解压 tar -xvf docker-18.06.1-ce.tgz2、将解压出来的docker文件内容移动到 /usr/bin/ 目录下 cp docker/* /usr/bin/3、将docker注册为service vim /etc/systemd/system/docker.service将下列…...

记 SpringBoot 使用@RequestBody 接收不到参数

POST请求&#xff0c;前端传的参数名字跟后端规定的参数一样。但是通过RequestBody注解接收的参数始终为NULL&#xff01; //实体类中属性没有用驼峰命名 private String SubscribeID; /*** 标题*/ private String Title;解决方案&#xff1a; 1、字段上使用JsonProperty(valu…...

unity 打包安卓错误汇集

Failed to find target with hash string "android-34’ in: D:Pr 他说找不到sdk34level的我用as打开后卸载又重装&#xff0c;最后解决了 我放到Plugins/Android/下面的Java代码没有被编译 这个不知道为什么。我故意把代码写的有问题&#xff0c;会报错那种&#xff…...

C语言-文件操作

&#x1f308;很高兴可以来阅读我的博客&#xff01;&#x1f31f;我热衷于分享&#x1f58a;学习经验&#xff0c;&#x1f3eb;多彩生活&#xff0c;精彩足球赛事⚽&#x1f517;我的CSDN&#xff1a; Kevin ’ s blog&#x1f4c2;专栏收录&#xff1a;C预言 1. 文件的作用 …...

ADB 操作命令详解及用法大全

ADB 简介 ADB&#xff0c;全称 Android Debug Bridge&#xff0c;是 Google 提供的一款用于 Android 平台设备&#xff08;包括真机和模拟器&#xff09;调试、交互和管理的命令行工具。通过 ADB&#xff0c;开发者可以在电脑上对连接的 Android 设备执行一系列高级操作&#…...

指针数组。

指针数组 int c[5]{1,2,3,4,5};int *pc;printf("p:%d",p);return 0;输出&#xff1a;p:-756683712 说明p是地址值&#xff0c;*p就是取这个地址上的元素的值。所以printf(“*p:%d”,*p); 打印出来的是 *p:1 *pc,c是c[5]数组的首地址元素。 #include <iostream>…...

GitHub开源项目权限管理-使用账号和个人令牌访问

1.打开后台账号设置 2.找到左下角的Developer settings 3.找到Personal access tokens 的 Tokens(classic) 4.选择创建新证书 5.填写证书信息 6.点击生成证书&#xff0c;复制证书并且保存起来&#xff08;血泪教训&#xff0c;证书只会在创建时显示一次&#xff0c;以后就再也…...

DevSecOps平台架构系列-亚马逊云AWS DevSecOps平台架构

目录 一、概述 二、AWS DevSecOps实施原则 2.1 尽早采用安全测试&#xff0c;加速问题反馈 2.2 优先考虑预防性安全控制 2.3 部署检测性安全控制时&#xff0c;确保有与之互补的响应性安全控制 2.4 安全自动化 2.5 总结 三、AWS DevSecOps关键组件 3.1 关键组件 3.2 关…...

KaTex 常用公式编辑

原文&#xff1a;https://blog.iyatt.com/?p7854 注&#xff1a;语法上和 Latex 差不多一样&#xff0c;我是因为 WordPress 上使用 WP Githuber MD 插件&#xff0c;才用的 KaTex&#xff08;插件里面的 LaTex 模块有 bug&#xff0c;无法渲染&#xff09; 希腊字母 大写代…...

网站分屏布局设计/百度指数关键词

算法题——分配礼物问题描述问题分析代码实现总结问题描述 圣诞节到了&#xff0c;圣诞老人准备了n 个礼物给k小朋友&#xff0c;每个礼物都是一样的。请问将这n个礼物分给k个小朋友&#xff0c;有多少种分法&#xff1f; 编写一个程式&#xff0c;输入是礼物的数量n和小朋友数…...

东城企业网站开发/郑州百度公司地址

本文实例讲述了PHP标准类(stdclass)用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;php是内置标准类的(stdclass)$obj new stdclass();echo ;var_dump($obj);$obj->a 1;$obj->b 1;var_dump($obj);运行结果如下&#xff1a;object(stdClass)[1]object(std…...

wordpress无法跳转正确页面/游戏推广公司怎么接游戏的

项目介绍 一款 Java 语言基于 SpringBoot2.x、MybatisPlus、Vue、ElementUI、MySQL等框架精心打造的一款前后端分离框架&#xff0c;致力于实现模块化、组件化、可插拔的前后端分离架构敏捷开发框架&#xff0c;可用于快速搭建前后端分离后台管理系统&#xff0c;本着简化开发…...

网站分享组件/福州网站seo公司

Android系统采用java作为平台软件基础开发语言&#xff0c;NDK使Android平台可以运行C/C代码这些代码汇编成ARM的elf可执行文件。 原生程序生成过程 经历4步&#xff1a;1。预处理2。编译3。汇编4。链接 经过第2步编译后C代码变成ARM汇编代码&#xff0c;NDK支持直接使用ARM汇编…...

分享代码的网站/小程序开发教程全集免费

机动目标跟踪——交互式多模型算法IMM 原创不易&#xff0c;路过的各位大佬请点个赞 WX: ZB823618313 机动目标跟踪——交互式多模型算法IMM机动目标跟踪——交互式多模型算法IMM1. 对机动目标跟踪的理解2. 机动目标跟踪方法概述3. 交互式多模型&#xff1a;概述4. 交互式多模…...

wordpress 插件大全/企业文化设计

windows环境下MySQL重启的命令行说明 windowsR 弹出运行框 在运行框中输入cmd 回车 进入系统的dos窗口 .启动mysql&#xff1a;输入 net start mysql; .停止mysql&#xff1a;输入 net stop mysql; windows下不能直接重启(restart)&#xff0c;只能先停止&#xff0c;再启…...