web-dev-qa-db-ja.com

WebViewで基本認証を処理する方法

WebViewをロードするアプリケーションを作成しました。ログインするには、Webサイトで基本認証が必要です。デフォルトのブラウザからWebサイトにアクセスしようとすると、ユーザー名とパスワードの入力を求めるポップアップボックスが表示されます。

アプリケーションを介してWebサイトにアクセスしようとすると、エラー401が表示され、ポップアップが表示されません。誰かが私を助けてくれるかどうか疑問に思っていましたか?

17
Kyle

Patrickが説明するよりも洗練された解決策は、ここで説明するWebViewClientのonReceivedHttpAuthRequestメソッドを使用することだと思います: http://www.mail-archive.com/Android-developers@googlegroups .com/msg30468.html

@Override
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String Host, String realm) {
    handler.proceed("username", "password");
}
32
Saad Farooq

Webサイトには認証が必要です。

まず、エラーに対応します。

_webview.setWebViewClient(new WebViewClient() {
   public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
     if (errorCode == 401) {
         // show alert to enter username and password
         // then when those are entered in the alert,
         //     set it through the setHttpAuthUsernamePassword(...) shown below
         //     and then reload the site
     }
   }
 });
_

この関数を使用して、ユーザーとパスワードを設定します。 WebView.setHttpAuthUsernamePassword()

_webview.setHttpAuthUsernamePassword(Host, realm, username, password);
_

すべて文字列です。ホストとレルムの意味の詳細については、上記のリンクを参照してください。

ここにある解決策: WebViewにいくつかの基本認証資格情報を提供しますか?

10
Patrick Boos
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String Host, String realm) {
     handler.proceed("USERNAME", "PASSWORD");
}

WebViewの401エラーについては役立つと思います。

9
NoobTW

この関数onReceivedHttpAuthRequestを使用します。 WebViewがHTTP認証要求を受信したことをホストアプリケーションに通知します。ホストアプリケーションは、提供されたHttpAuthHandlerを使用して、要求に対するWebViewの応答を設定できます。デフォルトの動作では、リクエストをキャンセルします。

以下はKotlinで記述されたサンプルです

 override fun onReceivedHttpAuthRequest(
            view: WebView,
            handler: HttpAuthHandler,
            Host: String,
            realm: String
        ) {
            handler.proceed("username", "password")
        }

ここでドキュメントを確認してください

0