OkHttp报错javax.net.ssl.SSLHandshakeException: Handshake failed
来源:互联网 发布:网络舆情监测机制 编辑:程序博客网 时间:2024/05/17 18:48
背景
今天学习了一下OkHttp,在使用OkHttp调用https接口的时候,报了SSLHandshakeException的异常,看了网上的资料,主要是服务器端使用了未被信任的证书,然后我就在寻找一种简单快速的解决方案。鸿洋老师在博客里详细阐述了OkHttp访问https的问题,在这里我就不做过多阐述了。
现在给大家贴出我的解决方案
OKHttp信任所有证书
private static OkHttpClient getUnsafeOkHttpClient() { try { // Create a trust manager that does not validate certificate chains final TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { @Override public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { } @Override public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { } @Override public java.security.cert.X509Certificate[] getAcceptedIssuers() { return new java.security.cert.X509Certificate[]{}; } } }; // Install the all-trusting trust manager final SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); // Create an ssl socket factory with our all-trusting manager final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); OkHttpClient.Builder builder = new OkHttpClient.Builder(); builder.sslSocketFactory(sslSocketFactory); builder.hostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } }); OkHttpClient okHttpClient = builder.build(); return okHttpClient; } catch (Exception e) { throw new RuntimeException(e); } }
这种方式是最简单快捷的一种解决方案,所以肯定会有它的弊端,从方法名我们可以看出来这是一种https不安全的解决方案,如果你想要一种临时的解决方案,这种方式确实是一种不错的选择。
1 0
- OkHttp报错javax.net.ssl.SSLHandshakeException: Handshake failed
- OkHttp报错javax.net.ssl.SSLHandshakeException: Handshake failed
- OkHttp报错javax.net.ssl.SSLHandshakeException: Handshake failed
- javax.net.ssl.SSLHandshakeException: Handshake failed
- 使用https出错javax.net.ssl.SSLHandshakeException: Handshake failed
- com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: Handshake failed
- 【LeanCloud之坑】javax.net.ssl.SSLHandshakeException:Handshake failed
- 解决OKHttp3 报OKHTTP javax.net.ssl.SSLHandshakeException错误
- javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
- 报错javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
- javax.net.ssl.SSLHandshakeException
- javax.net.ssl.SSLHandshakeException
- javax.net.ssl.SSLHandshakeException
- SSL/TLS的Handshake过程与javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure异常
- SSL/TLS的Handshake过程与javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure异常
- SSL/TLS的Handshake过程与javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure异常
- javax.net.ssl.SSLHandshakeException:PKIX path building failed解决方法
- android 访问https 证书问题 报错javax.net.ssl.SSLHandshakeException
- Socket和Http通信
- 连接的比较
- curl图片上传,网上很多太陈旧,导致上传错误
- x86 指令集发展历程
- If you insist running as root, then set the environment variable RUN_AS_USER=root before running thi
- OkHttp报错javax.net.ssl.SSLHandshakeException: Handshake failed
- Android Fragment中嵌套Fragment,不显示view
- 文本超出部分用省略号表示
- C#IO流总结
- swift学习笔记--for循环移除后的不便
- C++如何读取任意数目的整数
- MQ、JMS以及ActiveMQ
- Unix网络编程之给阻塞式函数设定超时限定
- VS2015使用小技巧 添加COM组件 Windows media player