Android - 下载 html 源时出错:未找到认证路径的信任锚

问题描述

我正在下载此网页 https://tv.zam.it/ch-Rai-1 的 html 源代码

    String content= "";
    URLConnection connection = null;
    try {
        URL url = new URL(address[0]);
        connection = (URLConnection) url.openConnection();
        Scanner scanner = new Scanner(connection.getInputStream());
        scanner.useDelimiter("\\Z");
        while (scanner.hasNext()) content += scanner.next();
        scanner.close();
    } catch (Exception ex) {
        content = ex.toString();
    }
  • 在 2019 年搭载 android 9 的三星手机上运行正常
  • on fire tv Stick (Fire OS 5.2.8.0) 工作正常
  • 在 w95 android 电视盒 (android 7.1.2) 上,它返回此消息:

javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:未找到证书路径的信任锚。

我尝试了许多建议的解决方案,但我无法让它们中的任何一个改变任何事情。该网页只提供电视节目信息,我只需要从源中获取一些字符串,不需要花哨的东西或严格的安全检查。有什么建议吗?

解决方法

将您的证书添加到自定义信任管理器,如本文所述:Trusting all certificates using HttpClient over HTTPS

这里有更多的解决方案 https://stackoverflow.com/a/16302527/9959901

,

原来添加到故障设备的 dns 服务器不喜欢该站点。这就是问题的原因。切换到另一个 dns 解决了该问题,而无需更改应用程序。