Проблема в том, что URL-адреса с самоподписанными сертификатами SSL отклоняются WebView
на Android, что приводит к появлению белого экрана.
Я понимаю, что на этот вопрос был ответ. Эти решения не работают.Вы можете видеть по комментариям, что это не работает для многих других.ServicePointManager
будет работать для IOS и компилироваться для Android, но обратный вызов никогда не будет повышен на Android, что приведет к появлению белого WebView
.
В Xamarin.Forms у меня есть полная страница WebView
.
<WebView x:Name="Browser" HeightRequest="1000" WidthRequest="1000"/>
В моем проекте Android MainActivity.cs
я попробовал предложенный ServicePointManager
, который не работает.Вместо этого в моем OnCreate
из 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);
}
My InvalidWebViewCient
является очень простым.Он наследует стандарт WebViewClient
и подавляет ошибку SSL.
public class InvalidWebViewClient : WebViewClient
{
public override void OnReceivedSslError(WebView view, SslErrorHandler handler, SslError error)
{
handler.Proceed();
}
}
Есть ли другой / лучший способ игнорировать ошибки SSL на Xamarin.Forms
WebView
для Android? ServicePointManager
не работает и добавление еще одного WebView
в моем MainActivity.cs
кажется активным счетчиком (не говоря уже о хакерстве) для Xamarin.Forms
.
PS Я понимаю, что подавлять все ошибки SSL плохо.Когда я буду уверен, что у меня есть решение, я построю его так, чтобы подавлять его только для открытого ключа сертификатов.