android - WebView - onReceivedHttpAuthRequest 永不停止

标签 android webview

我在 Android webview 应用程序中陷入死循环,应用程序在 onReceivedHttpAuthRequest 函数上被阻止。

mWeb.setWebViewClient(new WebViewClient() {
   @Override
   public void onPageFinished(WebView view, String url) {
       mProgressBar.setVisibility(View.GONE);
   }

   @Override
   public void onReceivedHttpAuthRequest(WebView view,HttpAuthHandler handler, String host, String realm) {
           if (isAdded())
               handler.proceed(getResources().getString(R.string.username), getResources().getString(R.string.pass));
   }

   @Override
   public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
       handler.proceed();
   }
});
mWeb.loadUrl(mUrl);

最佳答案

关于 Activity



    mWebView.LoadUrl(url);
    await Task.Delay(10000);                            
    if (!mWebView.IsShown | cliente.ErroReportado)
    {
        Toast t = Toast.MakeText(Android.App.Application.Context, "Erro ao acessar o servidor, verifique conexão, usuário e senha e tente novamente!", ToastLength.Long);
        t.SetGravity(GravityFlags.Center, 0, 0);
        t.Show();
        OnCreate(null);
    }
    }

在 WebViewClient 上

<p></p>

        class ViewClient : WebViewClient  
        {
            MainActivity _activity;

            public int iTentativasLogin { get; private set; }
            public bool ErroReportado { get; private set; }


            public ViewClient(MainActivity activity)
            {
                _activity = activity;
            }


            public override void OnReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, string host, string realm)
            {
                Toast t ;
                if (Usuario.Length == 0 | Senha.Length == 0)
                {
                    t = Toast.MakeText(Android.App.Application.Context, "Usuário ou senha não preenchidos", ToastLength.Long);
                    t.SetGravity(GravityFlags.Center, 0, 0);
                    t.Show();
                    handler.Cancel();
                    ErroReportado = true;
                }
                else
                {
                    iTentativasLogin++; 

                    if (iTentativasLogin < 4)
                    {
                        handler.Proceed(Usuario, Senha);
                    }
                    else
                    {
                        t = Toast.MakeText(Android.App.Application.Context, "Usuário ou senha incorretos", ToastLength.Long);
                        t.SetGravity(GravityFlags.Center, 0, 0);
                        t.Show();
                        handler.Cancel();
                        ErroReportado = true;
                    }

                }
    }
}

关于android - WebView - onReceivedHttpAuthRequest 永不停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41461787/

相关文章:

android - 如何访问 sdcard 中所有子文件夹中的所有 mp3 文件?

Android点击项目菜单不起作用

android - Achartengine 条形图设置边距颜色 - 如何将图像添加到边距?

java - 如何在 android 中的谷歌地图上绘制网格?

android - 如何在调用另一个 Activity 后恢复状态?

android - 不在新浏览器中打开 webview

javascript - Android WebView不显示网站内容

Android 在 TextView 或 EditView 中选择一个词

iOS 8 UIWebview 委托(delegate) : WebKit discarded an uncaught exception in the webView:didFinishLoadForFrame:

android - Webview Localhost Connection 拒绝使用 10.0.2.2 地址