我有一个应用程序,主要是一个网络视图,它将尝试连接到我的公司网页。该页面是 https 并且需要身份验证。当我在具有 ICS 的设备或模拟器上运行时,我正在使用的当前代码有效,但它不适用于 2.3.3。我已经尝试为 2.3.3 构建它,该版本已经在 2.3.3 和 4.x 上进行了测试,并且仅适用于 ICS。因此,我是否为 ICS 或 Gingerbread 构建它并不重要。
我已经尝试过针对类似问题的不同解决方案,但我无法让它发挥作用。
浏览器活动:
public void onCreate(Bundle savedInstanceState) {
...
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new myWebClient());
mWebView.getSettings().setJavaScriptEnabled(true);
...
mWebView.loadUrl(urlString); //urlString is an https site
}
我的网络客户端类:
public class myWebClient extends WebViewClient{
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm){
handler.proceed(username, password);
}
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){
handler.proceed();
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl){
super.onReceivedError(view, errorCode, description, failingUrl);
}
}
这是我申请的基本内容。我尝试登录不同的回调,但没有收到任何 SSL 错误或“常规”错误。我在 logcat 中看到的唯一一件事是,当我在 Gingerbread 上运行时,onReceivedHttpAuthRequest
会一遍又一遍地调用它。我已经检查过凭据是否正确,它们是正确的。我还可以提到<uses-permission android:name="android.permission.INTERNET"></uses-permission>
我的清单中有。
我已经与 IT 部门核实过服务器是否在使用SNI,但他们告诉我它没有使用它。
有没有人知道为什么这不起作用的原因?如前所述,由于某种原因,身份验证似乎不起作用,因为我看到onReceivedHttpAuthRequest
在 Gingerbread 中一遍又一遍地调用。
问题是页面没有加载,webview 保持空白。