Xamarin.Forms игнорирует ошибки SSL Android (самоподписанный) - PullRequest
0 голосов
/ 30 апреля 2019

Проблема в том, что 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 плохо.Когда я буду уверен, что у меня есть решение, я построю его так, чтобы подавлять его только для открытого ключа сертификатов.

...