博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
retrofit调用https接口报错java.security.cert.CertPathValidatorException
阅读量:3975 次
发布时间:2019-05-24

本文共 1892 字,大约阅读时间需要 6 分钟。

有些https接口,用retrofit+okhttps调用会报错:javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

解决方法是在每次调用接口前调用以下方法:

import java.security.KeyManagementException;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import javax.net.ssl.HostnameVerifier;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSession;import javax.net.ssl.X509TrustManager;    public static void setNoCertificates() {        try {            SSLContext sc = SSLContext.getInstance("SSL");            X509TrustManager trustManager = new X509TrustManager() {                @Override                public void checkClientTrusted(X509Certificate[] chain, String authType)                        throws CertificateException {                }                @Override                public void checkServerTrusted(X509Certificate[] chain, String authType)                        throws CertificateException {                }                @Override                public X509Certificate[] getAcceptedIssuers() {                    return new X509Certificate[0];                }            };            X509TrustManager[] trustManagers = new X509TrustManager[]{                    trustManager            };            sc.init(null, trustManagers, new SecureRandom());            httpClient.sslSocketFactory(sc.getSocketFactory(), trustManager).hostnameVerifier(new HostnameVerifier() {                @Override                public boolean verify(String hostname, SSLSession session) {                    return true;                }            }).build();        } catch (NoSuchAlgorithmException e) {            e.printStackTrace();        } catch (KeyManagementException e) {            e.printStackTrace();        }    }

 

转载地址:http://blrki.baihongyu.com/

你可能感兴趣的文章
异常处理
查看>>
存储过程
查看>>
动态SQL(Dynamic SQL)
查看>>
在存储过程之间传递数据
查看>>
迁移存储过程
查看>>
GET DIAGNOSTIC 语句
查看>>
Python 简介
查看>>
Python 注释
查看>>
Python 变量
查看>>
Python 数据类型 -- 数字
查看>>
Spring 管理对象
查看>>
Spring 自定义对象初始化及销毁
查看>>
Spring Batch 环境设置
查看>>
字符组转译序列
查看>>
字符转译序列
查看>>
Java 数据类型
查看>>
UTF-16 编码简介
查看>>
Java 变量名
查看>>
Java 四舍五入运算
查看>>
Spring Batch 例子: 运行系统命令
查看>>