私の会社の Web ページに接続しようとするほとんどが webview であるアプリケーションがあります。ページは 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>
自分のマニフェストに持っていることにも言及できます。
サーバーがSNIを使用しているかどうかを IT 部門に確認しましたが、使用していないとのことでした。
これがうまくいかない理由を知っている人はいますか?前述のように、onReceivedHttpAuthRequest
Gingerbread で何度も呼び出されているのを見ると、何らかの理由で認証が機能していないようです。
問題は、ページが読み込まれず、webview が空白のままになることです。