Java 突然,我的应用程序无法进行HTTPS查询
从2018年1月到6月,我离开了Android Studio,我可以制作简单的应用程序,查询https网站,处理JSON响应,并用选定的键值信息更新UI 当我回来时,这些应用程序都不会返回查询结果,Logcat会抛出一些关于javax ssl证书的消息,如:Java 突然,我的应用程序无法进行HTTPS查询,java,android,ssl,Java,Android,Ssl,从2018年1月到6月,我离开了Android Studio,我可以制作简单的应用程序,查询https网站,处理JSON响应,并用选定的键值信息更新UI 当我回来时,这些应用程序都不会返回查询结果,Logcat会抛出一些关于javax ssl证书的消息,如: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path
javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
(…)原因:java.security.cert.CertificationException:java.security.cert.CertPathValidator异常:找不到证书路径的信任锚点。
其中一个不再工作的应用程序是那些Udacity免费课程的ud843 Soonami起点。像ud851 Sunshine这样的旧应用程序也不再有效
即使在安装AS 3.1.3、Gradle 4.4和Gradle插件3.1.0并配置build.Gradle、安装java 8jdk和设置环境变量之后,他们也不会进行查询
我没有使用任何代理,只是使用相同的旧家庭网络
我承认,到目前为止我读到的大部分答案我都不理解,但似乎WWW的功能或应用程序连接到https站点的方式都发生了某种变化
从我读到的内容中,我只能推断,我们现在需要获得服务器真实性证书并更新应用程序代码,以便在尝试查询连接时检查匹配
读过
,我想我要做的就是在这种情况下
好吧,至少我让他们在物理移动设备上连接,不知道如何让他们在模拟器上运行,但这在我的机器上少了一个漏洞 与此同时,我所做的: ->下载java 8 jdk并设置java_HOME和JRE_HOME环境变量; ->重新安装Android Studio,导入设置; ->从Java8JDK改回android Studio附带的嵌入式OpenJDK; ->删除所有仿真器并创建新仿真器; ->删除了模块渐变文件指示,以便在编译选项内使用JavaVersion.version_1_8; ->学习了如何从下载证书,并在扩展名为.cer时将其格式保存为DER; ->创建了一个文件夹res>raw,我在其中保存了这个证书; ->基本上,我遵循Developer.android的建议,将问题作为图片附在后面,创建一个xml网络安全配置并相应地修改清单 至少这些应用程序可以在现实世界的移动设备上运行,不用介意这样测试它们
(用尤达的声音:)整整两周过去了。设备上的日期和时间正确吗?您使用哪个库发送HTTP请求?并将您的代码张贴在您正在制作的位置requests@Vlad:在PC和Emulator以及物理设备中都正确--@nimi:正在手动处理,证书何时过期?为什么我可以使用PC浏览器进行查询,但在Emulator中查询不起作用?