Flutter webview_flutter打开https地址白屏(android篇)

针对控制台出现的'Failed to validate the certificate chain, error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.'错误,博主在StackOverflow找到了解决方案。主要步骤包括:1) 找到并编辑webviewflutter项目的FlutterWebViewClient.java文件;2) 添加onReceivedSslError方法,调用handler.proceed()来忽略SSL错误;3) 导入所需库。完成以上操作后,成功解决了HTTPS页面无法打开的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

控制台报错

Failed to validate the certificate chain, error : java . security . cert. Cert Path Validator Exception: Trust anchor for certification path not found.
有道翻译:验证证书链失败,错误:java。 安全。 cert. cert路径验证器异常:未找到证书路径的信任锚。

在stackoverflow找到了解决办法
1.找到Flutter sdk目录下webviewflutter文件夹(说明一下:我使用的webview是1.0.7版本,所以根据你使用的版本去切换路径)

flutter\.pub-cache\hosted\pub.flutter-io.cn\webview_flutter-1.0.7\android\src\main\java\io\flutter\plugins\webviewflutter

2.打开FlutterWebViewClient.java文件
并添加这一行

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

添加到 internalCreateWebViewClient 函数。完成后它应该是这样的

private WebViewClient internalCreateWebViewClient() {
    return new WebViewClient() {
      @TargetApi(Build.VERSION_CODES.N)
      @Override
      public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        return FlutterWebViewClient.this.shouldOverrideUrlLoading(view, request);
      }

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

      @Override
      public void onPageFinished(WebView view, String url) {
        FlutterWebViewClient.this.onPageFinished(view, url);
      }
    };
  }

3- 在最上面添加这些进口

import android.net.http.SslError;
import android.webkit.SslErrorHandler;

最后成功打开https页面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值