问题是带有自签名SSL证书的网址被Android上的WebView
拒绝,导致白屏。
我知道这个问题answered.无效。您可以通过评论看到它不适用于其他许多人。 ServicePointManager
适用于IOS并适用于Android编译,但回调永远不会在Android上引发,导致白色WebView
。
在Xamarin.Forms中,我有整页WebView
。
<WebView x:Name="Browser" HeightRequest="1000" WidthRequest="1000"/>
在我的Android项目MainActivity.cs
中,我尝试了不起作用的建议ServicePointManager
。相反,我在OnCreate
的{{1}}中添加了一个MainActivity.cs
。
AddInvalidWebClient
我的 private void AddInvalidWebClient()
{
WebView wb = new WebView(this);
wb.SetWebViewClient(new InvalidWebViewClient());
wb.LoadUrl("https://invalidcertificate.com");
// Not required for Invalid certificate, but required for my site.
WebSettings ws = wb.Settings;
ws.JavaScriptEnabled = true;
// Add our new wb.
SetContentView(wb);
}
非常基础。它继承了标准InvalidWebViewCient
并抑制了SSL错误。
WebViewClient
在Android的 public class InvalidWebViewClient : WebViewClient
{
public override void OnReceivedSslError(WebView view, SslErrorHandler handler, SslError error)
{
handler.Proceed();
}
}
Xamarin.Forms
上还有另一种/更好的方法来忽略SSL错误吗? WebView
不起作用,并且添加了另外一个ServicePointManager
在我的WebView
中似乎对MainActivity.cs
具有反作用(更不用说hacky了)。
P.S。我知道抑制所有SSL错误是不好的。一旦我确定有解决方案,我将以一种仅针对我的证书公共密钥抑制它们的方式构建。