最近在写接口的时候给对方回推数据,发送https请求的时候遇到这么个报错:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetHTTPS经由超文本传输协议(HTTP)进行通信,但利用SSL/TLS来加密数据包,这里遇到的问题就是这个安全证书缺少产生的,所以,为了解决这个问题,一般有良好总方法,第一种是将对方网站的证书提前下到本地导入,这里的场景不大适合这个方式,所以采用第二种方式,忽略ssl证书的方法:

具体步骤大致有3步,首先添加一个RestTemplateConfig配置文件,源码如下:

package com.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;@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;}
}

第二步,修改初始化RestTemplate类:

RestTemplate restTemplate = new RestTemplate(RestTemplateConfig.generateHttpRequestFactory());

第三步便可以将发送信息写进代码中发送请求了

RestTemplate restTemplate = new RestTemplate(RestTemplateConfig.generateHttpRequestFactory());MultiValueMap<String, Object> headers = new LinkedMultiValueMap<String, Object>();headers.add("Accept", "*/*");headers.add("Content-Type", "application/json");String requestBody = "{\"returnData\":\"" + str + "\"}";System.out.println(str);HttpEntity entity = new HttpEntity(requestBody, headers);ResponseEntity<String> responseEntity=restTemplate.postForEntity("https://****",entity,String.class);//获取返回结果String result= responseEntity.getBody();

工作之余借机记录一下。

springboot 使用restTemplate 发送https请求 忽略ssl证书相关推荐

  1. RestTemplate 发送 Https 请求调用

    RestTemplate 发送 Https 请求调用 个人博客:https://jacob.org.cn import org.apache.http.conn.ssl.NoopHostnameVer ...

  2. python怎么爬虫https的内容_爬虫15 python 如何处理HTTPS请求访问 SSL证书验证

    1 https和SSL之间是什么关系 https和SSL之间是什么关系:https就是在http上面加了一层ssl协议,在http站点上部署SSL数字证书就变成了https. 现在随处可见 https ...

  3. JAVA实现发送HTTPS请求(SSL双向认证)

    一.项目背景 Java项目需要作为客户端发起HTTPS请求访问服务端,并且需要携带证书进行SSL双向认证,当前提供的证书相关文件有:ca.crt.ca.key.client.crt.client.ke ...

  4. 设置https请求忽略安全证书

    前两天要调用第三方的接口遇到了安全证书的问题,找了各种方法下面贴一下自己汇总的解决办法: 第一个写法(这个写法是最简单的,亲测有效,但是这个写法用到了jdk1.8的lambda表达式,1.8之前的版本 ...

  5. 【Spring】Feign客户端发送HTTPS请求绕过认证

    1.概述 转载:https://www.jianshu.com/p/ea627708ab52 一个Spring Boot项目,为了使用Harbor仓库,起初通过Spring RestTemplate完 ...

  6. springboot忽略证书_SpringBoot中通过java代码实现忽略SSL证书

    //工具类 package com.oauth.utils; import org.springframework.stereotype.Component; import java.security ...

  7. python接口自动化(十二)--https请求(SSL)(详解)

    简介 本来最新的requests库V2.13.0是支持https请求的,但是一般写脚本时候,我们会用抓包工具fiddler,这时候会 报:requests.exceptions.SSLError: [ ...

  8. Python urllib3和requests发送HTTPS请求时出现SSLError或InsecureRequestWarning

    目录 问题及原因分析 优先考虑的解决方法: 下载证书 使用证书 手动获取证书 不推荐使用的备用解决方法: 关闭方法 衍生问题 参考文档 问题及原因分析 在我们通过urllib3和requests进行H ...

  9. java模拟https请求_java-用httpclient模拟发送https请求

    --调用项目提供接口,接口是用HTTP URL实现的,最初的想法是另一个项目用jQuery post进行请求. ---但是,很可能另一个项目是部署在别的机器上,那么就存在跨域问题,而jquery的po ...

最新文章

  1. 算法设计与分析 贪心算法
  2. kettle 的表输出 table output
  3. 如何使用云原生数据湖,助力线上教育行业逐步智能化
  4. axure8.0发布html,Axure 8.0 beta最后一批新增和改进功能的介绍
  5. linux下的Apache2 + mysql5 + php5 源码完整安装详解
  6. 吴恩达 深度学习 编程作业(1-3)- Planar data classification with one hidden layer(平面花形状)
  7. hadoop1.2.1的安装
  8. d3js scales深入理解
  9. python+adb实现物理按键长按(比如长按关机)
  10. ubuntu 切换java环境,配置单独的用户环境
  11. 2.Node.js access_token的获取、存储及更新
  12. OpenInventor笔记:线性坐标轴PoLinearAxis的使用
  13. 如何查看局域网络计算机资料,怎么查看局域网内所有电脑的信息
  14. 库存进销存出入库销售mysql表结构_进销存数据库表结构设计.doc
  15. MySQL备份的几种常用方法与恢复步骤
  16. numpy的array_equal函数
  17. iOS10.3正式版发布:iOS10.3新功能有哪些? 韩俊强的博客
  18. module ‘sklearn.utils._openmp_helpers‘ has no attribute ‘__pyx_capi__‘
  19. 【Git】如何进行分支合并
  20. calipso是什么意思_fub是什么意思_fub怎么读_fub翻译_用法_发音_词组_同反义词_小而胖的人-新东方在线英语词典...

热门文章

  1. sql设为简单模式sql_SQL模式演练
  2. 什么是SQL Server中的数据库规范化?
  3. nodejs项目安装ant design
  4. Codeforces 1105C (DP)
  5. 【转】Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
  6. Swift 2.2 最基本的多线程
  7. Effective Java (7) - 避免终止方法
  8. nvl,空时的推断和取值
  9. @Scope(prototype)
  10. 面向对象课程第四单元作业总结