有关Android WebView SSL信任的支持

时间:2015-05-15 09:08:29

标签: android ssl webview webviewclient

我需要有关SSL信任的帮助。我正在WebView中加载支付网关页面。这是一个POST请求,我正在传递一个有效负载。 这种情况一直顺利发生。(如下所示)

mWebView = (Android.Webkit.WebView)Control;

string payload = "myPayload";

byte[] valTest = Encoding.UTF8.GetBytes(payload.ToCharArray(0, payload.Length));

mWebView.Settings.JavaScriptEnabled = true;
mWebView.Settings.DomStorageEnabled=true;

mWebView.SetWebViewClient(new MyWebViewClient(this));
mWebView.SetWebChromeClient(new ChromeClient());
mWebView.PostUrl("https://mypage", valTest);

填写表单并提交后,我在WebViewClient类的OnReceivedSslError方法中获得回调。在这里我要求它继续(根据各种论坛)。一旦完成,我没有得到任何成功的回调。一旦我从webview获得响应,我需要能够读取javascript值。我不知道如何实现这一目标。 下面显示的是OnSSLErrorReceived Callback方法。

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

预期 - 1.在提交表格时,应该信任(这是一张自签名证书)。 2.完成上述步骤后,我们期待网页的回复。我们需要从页面中读取javascript值。我怎样才能做到这一点? 我没有看到任何SuccessCallback或ResponseCallback。

我使用下面的内容来阅读JS值。但这不起作用。

 view.EvaluateJavascript("document.getElementById('test').value", new MyCallbackClass());

1 个答案:

答案 0 :(得分:1)

上述问题已得到解决。调用handler.Proceed OnSSLError方法很好,但问题是在这个回调中调用base。一旦我删除base.OnSSLError我的代码工作正常。

页面完成后,我能够在OnPageFinished回调方法中读取JS值。 此外,评估JS函数也正常工作,我得到了回调。