嗨,
作为Xamarin的替代品,我试图创建一个具有相同功能的应用程序。 但是,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更好的方法了?
答案 0 :(得分:2)
在Android上,您可以修改插件。将副本克隆到本地计算机,然后向flutter_webview_plugin/android/src/main/java/com/flutter_webview_plugin/BrowserClient.java
覆盖public void onReceivedSslError (WebView view,
SslErrorHandler handler,
SslError error)
只需执行handler.proceed()
假设您的项目在/projects/myproject
中,并且您将插件克隆到/projects/flutter_webview_plugin
中。在/projects/flutter_webview_plugin/android/src/.../BrowserClient.java
中进行更改。然后,使用(用flutter_webview_plugin替换现有条目)更新项目的pubspec.yaml
:
dependencies:
flutter_webview_plugin:
path: ../flutter_webview_plugin
答案 1 :(得分:0)
今天 flutter_webview_plugin 有一个参数 ignoreSSLErrors
。示例:
return WebviewScaffold(
url: url,
ignoreSSLErrors: true,
appBar: new AppBar(
title: Text('Title'),
),
);