Android使用Https请求服务器,信任所有证书
16lz
2021-01-26
服务器配置了SSL证书后,Android端把http改成https之后也不能请求成功!
有一种是自己信任指定证书
另一种直接信任所有证书
我们直接信任所有证书新建工具类TrustAllSSL :
public class TrustAllSSL implements 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]; } public static SSLSocketFactory createSSLSocketFactory() { SSLSocketFactory factory = null; try { SSLContext context = SSLContext.getInstance("TLS"); context.init(null, new TrustManager[]{new TrustAllCerts()}, new SecureRandom()); factory = context.getSocketFactory(); } catch (Exception e) { } return factory; } public static class TrustAllHostnameVerifier implements HostnameVerifier { @Override public boolean verify(String hostname, SSLSession session) { return true; } }}
在OKhttp配置使用:
OkHttpClient client;//创建OkHttpClient对象。 client = new OkHttpClient.Builder() .connectTimeout(15, TimeUnit.MINUTES)//单位是秒 .readTimeout(15, TimeUnit.MINUTES) .sslSocketFactory(TrustAllSSL.createSSLSocketFactory()) .hostnameVerifier(new TrustAllCerts.TrustAllHostnameVerifier()) .build();
更多相关文章
- INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 解决终极办法
- Mac上面利用charles抓取https的包(android手机版)
- AS(android studio) 添加第三方库时报,Error: Failed to resolve:
- 解决android sdk manage打开闪退的解决方法
- Android开发中遇到的几个问题及解决方案
- Android(安卓)Studio中如何查看获取MD5和SHA1值(应用签名)
- android工程gen目录中R.java包名是怎么确定
- android WebView在应用内打开网页的问题
- Android(安卓)Application Digital Signatures - Android(安卓)