WebViewをロードするアプリケーションを作成しました。ログインするには、Webサイトで基本認証が必要です。デフォルトのブラウザからWebサイトにアクセスしようとすると、ユーザー名とパスワードの入力を求めるポップアップボックスが表示されます。
アプリケーションを介してWebサイトにアクセスしようとすると、エラー401が表示され、ポップアップが表示されません。誰かが私を助けてくれるかどうか疑問に思っていましたか?
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");
}
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にいくつかの基本認証資格情報を提供しますか?
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String Host, String realm) {
handler.proceed("USERNAME", "PASSWORD");
}
WebViewの401エラーについては役立つと思います。
この関数onReceivedHttpAuthRequestを使用します。 WebViewがHTTP認証要求を受信したことをホストアプリケーションに通知します。ホストアプリケーションは、提供されたHttpAuthHandlerを使用して、要求に対するWebViewの応答を設定できます。デフォルトの動作では、リクエストをキャンセルします。
以下はKotlinで記述されたサンプルです
override fun onReceivedHttpAuthRequest(
view: WebView,
handler: HttpAuthHandler,
Host: String,
realm: String
) {
handler.proceed("username", "password")
}