Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 突然,我的应用程序无法进行HTTPS查询_Java_Android_Ssl - Fatal编程技术网

Java 突然,我的应用程序无法进行HTTPS查询

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

从2018年1月到6月,我离开了Android Studio,我可以制作简单的应用程序,查询https网站,处理JSON响应,并用选定的键值信息更新UI

当我回来时,这些应用程序都不会返回查询结果,Logcat会抛出一些关于javax ssl证书的消息,如:

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站点的方式都发生了某种变化

从我读到的内容中,我只能推断,我们现在需要获得服务器真实性证书并更新应用程序代码,以便在尝试查询连接时检查匹配

读过

,我想我要做的就是在这种情况下

  • 这真的是当今的一项要求吗?使用证书?如果是这样的话,我如何获得该站点和查询的PEM或DER格式的证书,例如:

  • 如果我完全错了,我错过了什么?有人能用一种基本的方式解释一下,为了让这些应用程序在今天正常工作,发生了什么变化


  • 好吧,至少我让他们在物理移动设备上连接,不知道如何让他们在模拟器上运行,但这在我的机器上少了一个漏洞

    与此同时,我所做的: ->下载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中查询不起作用?