0

私の会社の 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​​ 部門に確認しましたが、使用していないとのことでした。

これがうまくいかない理由を知っている人はいますか?前述のように、onReceivedHttpAuthRequestGingerbread で何度も呼び出されているのを見ると、何らかの理由で認証が機能していないようです。

問題は、ページが読み込まれず、webview が空白のままになることです。

4

0 に答える 0