본문 바로가기

Programming

Webview 사용시 ssl 문제 (ignore ssl error)

공기업 내부 인터넷 망을 사용하는 환경에서 

애뮬레이터를 사용할때

webview에서 사이트에 접속을 하지 못하는 경우가있다.

안전하지 않은 페이지에 접근한다는 에러였다.

찾아보니 webviewclient를 이용해 이를 무시하고 진행하라는 예제가 많았다.

하지만 반은맞고 반은틀렸다.

정답은 FormsWebViewClient 였다.

----

----

- 해결법 -

커스텀 랜더러를 생성하자

public class sslWebview_ad WebViewRenderer
{

       protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)

       {

              base.OnElementChanged(e);
              if (Control != null)
              {
                Control.SetWebViewClient(new MyFormsWebViewClient(this));
              }

       }

       internal class MyFormsWebViewClient : FormsWebViewClient
       {
            sslWebview_ad _renderer;

            public MyFormsWebViewClient(sslWebview_ad renderer) : base(renderer)
            {
                _renderer = renderer;
            }

            public override void OnReceivedSslError(Android.Webkit.WebView view, Android.Webkit.SslErrorHandler handler, Android.Net.Http.SslError error)
            {
                handler.Proceed();
            }

            public override void OnPageFinished(Android.Webkit.WebView view, string url)
            {
                base.OnPageFinished(view, url);
            }

            public override void OnLoadResource(Android.Webkit.WebView view, string url)
            {
                base.OnLoadResource(view, url);
            }
        }

}