当前位置: 首页 > 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);}}
http://www.lryc.cn/news/329233.html

相关文章:

  • 编程器固件修改教程
  • Python从原Excel表中抽出数据存入同一文件的新的Sheet(附源码)
  • 计算机网络实验六:路由信息协议RIP
  • MySQL数据库备份策略与实践详解
  • String类相关oj练习
  • 【Linux】进程实践项目 —— 自主shell编写
  • 基于SpringBoot和Vue的学生笔记共享平台的设计与实现
  • C++心决之命名空间、重载函数和引用
  • higress使用了解
  • Swagger3探索之游龙入海
  • javaWeb项目-学生考勤管理系统功能介绍
  • 云备份项目认识、环境搭建以及所使用的库的介绍
  • 汇编语言第四版-王爽第2章 寄存器
  • MoonBit MeetUp回顾——张正、宗喆:编程语言在云原生与区块链领域的技术探索
  • 云原生靶场kebernetesGoat、Metarget
  • 【3D目标检测】Det3d—SE-SSD模型训练(前篇):KITTI数据集训练
  • k8s1.28.8版本安装prometheus并持久化数据
  • Mybatis-特殊SQL的执行
  • 金融衍生品市场
  • 2、Cocos Creator 下载安装
  • Docker版本:18.06.1安装
  • 记 SpringBoot 使用@RequestBody 接收不到参数
  • unity 打包安卓错误汇集
  • C语言-文件操作
  • ADB 操作命令详解及用法大全
  • 指针数组。
  • GitHub开源项目权限管理-使用账号和个人令牌访问
  • DevSecOps平台架构系列-亚马逊云AWS DevSecOps平台架构
  • KaTex 常用公式编辑
  • 域攻防渗透之委派攻击