【问题标题】:WebView won't load amazon.comWebView 不会加载 amazon.com
【发布时间】:2017-01-14 22:13:44
【问题描述】:

最近亚马逊发生了 SSL 变化。因此,许多示例和我自己的个人项目已经停止工作。这可能是什么原因,以及如何解决?

【问题讨论】:

  • 如果你想有自我回答的问题,请确保将问题发布到问题中,并将答案发布到答案部分。答案还应包含解释-在当前的半线状态下,由于质量非常低,它可能会收集反对票。
  • 感谢您发布 Q/A 对。我已将答案移至答案框,但我想知道这个问题是否可以充实一点?您是否有代码示例可以在修复之前说明问题?

标签: android webview


【解决方案1】:

(代表 OP 发布)

我没有实现onReceivedSslError 方法。没有这种方法,url 根本不会加载; onReceivedError 中没有任何内容。隐藏的线索是“301 Moved Permanently”,只有在 Chrome 浏览器调试和chrome://inspect/ 时才能看到。

我是这样解决的:

  1. 导入https://github.com/WebPlatformTest/WebView-Browser
  2. 启动应用程序。
  3. 转到“www.google.com” - 很好。
  4. 转到“http://www.amazon.com”,什么也没有。
  5. 转到您的 Windows Chrome 浏览器应用程序和 chrome://inspect/#devices。 请注意“301 已永久移动”。

添加:

@Override
public void onReceivedSslError(WebView view, final SslErrorHandler
    handler, SslError error) {
    handler.proceed();
}

解决所需的 SSL 重定向。

【讨论】:

    【解决方案2】:

    我昨天刚刚发布了完全相同的问题。看起来这是 Chrome 版本 53 和 53 的问题。请在此处阅读:How to mitigate weird webview SSL/HTTPS errors in webview?

    问题可以通过从谷歌下载/安装 webview 应用程序升级到最新的 webview 版本来解决,该应用程序将更新到 Chrome 版本 55:https://play.google.com/store/apps/details?id=com.google.android.webview

    看来我们有两个选择: 1) 实现 onReceivedSslError 以忽略 SSL 错误,但是,google play 有可能会拒绝该应用程序。 2) 另一种选择是如果用户遇到 SSL 错误并且拥有 53 或 53 版本的 Chrome,则强制用户升级其 webview 版本...

    【讨论】:

    • 我相信你对问题根源的理解是正确的。它确实可以追溯到 Chrome 53。忽略 SSL 错误让我可以进一步测试,但没有解决问题。现在使用 Chrome 55 进行测试,加载亚马逊网页时不会触发 onReceivedSslError。因此,如果将来发生 SSL 错误,我将更改我的代码以向用户显示提示。遗憾的是,我的声誉很低,无法为您的答案投票,但谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-06-28
    • 2018-10-18
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多