OkHttp报错javax.net.ssl.SSLHandshakeException: Handshake failed-程序员宅基地

技术标签: android  

当你看内容前,先确认下是否自己的手机或模拟器与网络时间相同。如果不同,设置后,看是否解决,如果没有解决,再看下面的内容。

在开发中,使用的数据请求是Okhttp进行数据请求,当请求到Https的时候,出行证书错误,我的使用场景是,获取省市县三级地址数据,在模拟器上ok的,但当使用真机测试的时候发现,无法获取数据,而且报错是:

javax.net.ssl.SSLHandshakeException: com.android.org.bouncycastle.jce.exception.ExtCertPathValidatorException

 javax.net.ssl.SSLHandshakeException: com.android.org.bouncycastle.jce.exception.ExtCertPathValidatorException: Could not validate certificate: Certificate not valid until Sat Nov 08 08:58:58 GMT+08:00 2014 (compared to Tue Jan 05 01:46:58 GMT+08:00 2010)
 
 
  
  • 1

Could not validate certificate这句说明在使用OkHttp调用https接口的时候,报了SSLHandshakeException的异常,看了网上的资料,主要是服务器端使用了未被信任的证书:

原文博主地址:http://blog.csdn.net/voidmain_123/article/details/52703464

简单粗暴的解决方法:

Okhttp信任所有证书
 
 
  
  • 1

在获取OkHttpClient的时候不使用new OkhttpClinet,使用如下方法获取,然后后面的超时等设置,还是一样的。

未修改前

   mOkHttpClient = new OkHttpClient().newBuilder()
                .connectTimeout(10, TimeUnit.SECONDS)
                .readTimeout(10, TimeUnit.SECONDS)
                .writeTimeout(10, TimeUnit.SECONDS)
                .build();
 
 
  
  • 1
  • 2
  • 3
  • 4
  • 5

修改后

  mOkHttpClient =gettUnsafeOkHttpClient().newBuilder()
                .connectTimeout(10, TimeUnit.SECONDS)
                .readTimeout(10, TimeUnit.SECONDS)
                .writeTimeout(10, TimeUnit.SECONDS)
                .build();
 
 
  
  • 1
  • 2
  • 3
  • 4
  • 5

getUnsafeOkHttpClient()

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);
        }
    }
 
 
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

测试以后可以使用,原文博主也说,这个方法可能存在其他问题。但是是最简单的解决方式 
后面测试中发现,是我的手机时间不是北京时间,哎,坑呐。。。。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_32405269/article/details/78343112

智能推荐

海尔电商峰值系统架构设计最佳实践_电商系统 项目团队 最佳实践-程序员宅基地

文章浏览阅读2.2k次。摘要:本文重点介绍了海尔电商平台的架构方案,也用不少篇幅阐述面临的场景和挑战,以及在架构方案决策过程中的关注点。其实作为一个优秀的电商平台,提供极致的用户体验、让技术最大化地创造价值,才是架构的终极目标。多数电商平台都会经历相似的过程,流量和业绩每年以几倍至十几倍的速度增长,每年都要接受几次大规模、全方位的系统检阅,例如双11、周年庆等购物狂欢节,期间流量和订单可能是日常的十几倍甚_电商系统 项目团队 最佳实践

【Flink】Flink CEP 案例_flink cep 监听zk-程序员宅基地

文章浏览阅读1.1k次。1.概述我们先产生一个输入流,这个输入Event流由Event对象和event time组成那么要使用EventTime,除了指定TimeCharacteristic外,在Flink中还要assignTimestampsAndWatermarks,其中分别定义了Eventtime和WaterMark,/** * 测试结果: * {start=[Event(id=1, name=start, money=1.0)], middle=[Event(id=5, name=middle,._flink cep 监听zk

c++中 getline(), cin.get(), cin.getline() 总结_getline(cin,ch[i]);-程序员宅基地

文章浏览阅读646次。cin.get() 与 cin.getline() 很相似,只是cin.get() 把分界符保留在输入流中_getline(cin,ch[i]);

电子化以后如何申请软件著作权-程序员宅基地

文章浏览阅读1k次,点赞30次,收藏24次。​申请地址:中国版权登记业务平台。

Django框架学习笔记-程序员宅基地

文章浏览阅读224次。django框架MVC框架简介MVC的产生理念:分工。让专门的人去做专门的事。MVC的核心思想:解耦M:model模型,和数据库进行交互V:view视图,产生HTML页面C:controller控制器,接收请求,进行处理,与M,V进行交互,返回应答Django的MVT框架本质上还是MVC的思想M:model模型,和MVC中M功能相同,和数据库进行交互V:View视图,和MVC中C功能相同..._object.get(id=bid)

了解装机_280冷排和360冷排差距-程序员宅基地

文章浏览阅读2.7k次,点赞4次,收藏7次。1.前言心血来潮,想了解一下电脑的硬件,也有过自己组装一台电脑的想法。正好也学完的计算机组成原理,对这些有一定的了解。万一以后有妹子叫我帮她组装电脑呢。本人并不是专业的,是个小白,只是想了解,便查阅了一些资料,顺便记录2.电脑配件有哪些电脑主板,这块电路板上承载着CPU接口、GPU和内存插槽等一系列配件的接口插槽,而信号的输出输入也是需要通过主板上面的各种接口来实现的,是电脑的基础配件之一;CPU,中央处理器,是一个精密的集成电路,是电脑运算和控制的核心,信息处理和各部件之间的沟通都需要通过CPU_280冷排和360冷排差距

随便推点

tensorflow遇到问题Check failed: PyBfloat16_Type.tp_base != nullptr-程序员宅基地

文章浏览阅读240次。tensorflow遇到问题Check failed: PyBfloat16_Type.tp_base != nullptr这个问题是tensorflow环境的numpy版本过低,需要升级numpy的版本。首先进入tensorflow环境,并卸载numpyactivate tensorflowpip uninstall numpy最后更新目前唯一存在的numpy:python -m pip install --upgrade numpy参考原文:https://my.oschina.net_check failed: pybfloat16_type.tp_base != nullptr

Eclipse中Debug 查看变量报 com.sun.jdi.ObjectCollectException occurred while retrieving value错误 解决方式_com.sun.jdi.objectcollectedexception occurred whil-程序员宅基地

文章浏览阅读4.5k次。一、com.sun.jdi.ObjectCollectException occurred while retrieving valueEclipse中Debug 查看变量报 com.sun.jdi.ObjectCollectException occurred while retrieving value错误 解决方式com.sun.jdi.ObjectCollectException occurred while retrieving value异常,字面上我们可以看出,是对象收集异常,是垃圾回_com.sun.jdi.objectcollectedexception occurred while retrieving value.

计算机毕业设计分享-SSM国潮文创用品销售网站 18307(赠送源码数据库)JAVA、PHP,node.js,C++、python,大屏数据可视化等_文创产品展销网站设计与实现java-程序员宅基地

文章浏览阅读1.5k次,点赞45次,收藏42次。免费领取项目源码,请关注赞收藏并私信博主,谢谢-本文实现了对国潮文创商城系统的分析与设计。国潮文创商城系统采用SM框架,MSQL数据库系统,实现了浏览商品、消费者购买、用户订单管理、页面管理、商品管理等功能。本文从研究背景和现状、系统需求分析、系统详细设计、系统实现、系统测试等方面详细叙述了国潮文创商城系统设计与实现的过程。_文创产品展销网站设计与实现java

《基于MATLAB的MK2三自由度机械臂轨迹规划与控制器仿真设计》_三自由度机械臂适应控制matlab-程序员宅基地

文章浏览阅读350次,点赞3次,收藏7次。摘 要:本文的研究对象为EEZYbotARM MK2三自由度机械臂,分析了其机械结构,建立D-H参数表,同时在MATLAB中建立该机械臂正逆运动学模型,对该机械臂进行高阶多项式插值法轨迹规划,写出复杂字。利用MATLAB中的Simulink工具,建立MK2机械臂的仿真模型,设置机械臂的初始状态和目标轨迹,进行仿真分析,并对比不同控制器下的运动轨迹和响应性能。考虑到MK2机械臂的载荷特性,设计了力矩控制器,通过对机械臂的力矩进行实时调整,使机械臂在负载变化时保持稳定的控制效果。3.1 高阶多项式插值法。_三自由度机械臂适应控制matlab

java计算机毕业设计图书馆座位预约系统源代码+数据库+系统+lw文档_图书预约业务数据-程序员宅基地

文章浏览阅读280次。springboot基于SpringBoot的创意项目众筹平台的设计与开发。springboot基于Web的人事管理系统的设计与实现。jsp基于Web的鲜花采购及预定系统的设计与实现ssh。JSP婚纱影楼管理系统的设计与实现sqlserver。springboot基于web的学校工资管理系统。springboot在线问诊系统的设计与实现。ssm基于SSM框架的学生协会管理系统。_图书预约业务数据

MemoryAnalyzer-内存泄露分析工具-程序员宅基地

文章浏览阅读1.9w次,点赞3次,收藏9次。概述对于大型 JAVA 应用程序来说,再精细的测试也难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现。JVM 能够记录下问题发生时系统的部分运行状态,并将其存储在堆转储 (Heap Dump) 文件中,从而为我们分析和诊断问题提供了重要的依据。通常内存泄露分析被认为是一件很有难度的工作,一般由团队中的资_memoryanalyzer

推荐文章

热门文章

相关标签