干草,
作为Xamarin的替代品,我尝试在flutter中创建了一个具有相同功能的应用程序。但是webview插件/包不能使用自签名的ssl证书。在Xamarin中,有一种方法可以处理ssl错误,同时仍然可以加载网站。
当前代码:
@override
void initState() {
super.initState();
final flutterWebviewPlugin = new FlutterWebviewPlugin();
flutterWebviewPlugin.onHttpError.skip(1000);
flutterWebviewPlugin.launch("https url to website", hidden: true,
allowFileURLs: true,
appCacheEnabled: true,
withJavascript: true,
withLocalStorage: true,
withZoom: true);
flutterWebviewPlugin.onHttpError.skip(1000);
flutterWebviewPlugin.onStateChanged((state) async)
{
flutterWebviewPlugin.evalJavascript(
"document.getElementById(\"name\").innerText = \"username\"");
flutterWebviewPlugin.evalJavascript(
"document.getElementById(\"password\").innerText = \"pw\"");
flutterWebviewPlugin.evalJavascript(
"document.getElementById(\"loginbutton\").invokeMember(\"click\")");
var test = flutterWebviewPlugin.evalJavascript(
"document.getElementById(\"errorbox\").innerText");
};
flutterWebviewPlugin.dispose();
flutterWebviewPlugin.close();
错误:
Failed to validate the certificate chain, error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
有没有比用java和swift编写自己的包或自定义webview更好的方法呢?
发布于 2019-01-17 01:53:30
在Android上,你可以修改插件。将副本克隆到本地计算机,并向flutter_webview_plugin/android/src/main/java/com/flutter_webview_plugin/BrowserClient.java
添加附加覆盖
用一个简单执行handler.proceed()
的实现覆盖public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error)
假设您的项目是/projects/myproject
,并且您将插件克隆到了/projects/flutter_webview_plugin
中。在/projects/flutter_webview_plugin/android/src/.../BrowserClient.java
中进行更改。然后将项目的pubspec.yaml
更新为(替换现有的flutter_webview_plugin条目):
dependencies:
flutter_webview_plugin:
path: ../flutter_webview_plugin
发布于 2021-03-27 13:40:37
现在,flutter_webview_plugin有一个参数ignoreSSLErrors
。示例:
return WebviewScaffold(
url: url,
ignoreSSLErrors: true,
appBar: new AppBar(
title: Text('Title'),
),
);
https://stackoverflow.com/questions/54222165
复制相似问题