我有一个主要是webview的应用程序,它将尝试连接到我公司的网页。该页面是https并需要身份验证。当我在具有ICS的设备或仿真器上运行时,我正在使用的当前代码工作,但它在2.3.3上不起作用。我已经尝试为2.3.3构建它,这个版本已经在2.3.3和4.x上进行了测试,只适用于ICS。因此,如果我为ICS或Gingerbread构建它并不重要。
我尝试过针对类似问题的不同解决方案,但我无法让它发挥作用。
BrowserActivity:
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
}
我的webclient类:
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,但他们告诉我它没有使用它。
有没有人知道为什么这不起作用的原因?如前所述,由于某些原因认证认证不起作用,因为我看到在Gingerbread中一遍又一遍地调用onReceivedHttpAuthRequest
。
问题是页面没有加载,webview保持空白。