私のアプリでは、HTTPS を介して Web サービスへの HTTP 呼び出しを行います。私の望みは、認証チャレンジがある場合にのみユーザーにユーザー名とパスワードを要求するようにクライアントを設計することです。プリエンプティブではなく、リアクティブになりたい。アプリの性質上、認証が不要な場合があります。
iOS では、このプロセスは、私のアプリの iOS バージョンに実装されているNSURLConnectionDelegateProtocolを介して非常に簡単になります。このクラスを使用して接続が確立され、チャレンジが提示された場合にのみ、クラスはデリゲートに認証資格情報を要求します。
Androidでこれを行うにはどうすればよいですか? AuthenticationHandlerを使用していますか? それともオーセンティケーター?もしそうなら、例やチュートリアルを提供できますか?
編集1:
Authenticator クラスを使用して (以下の私の回答を参照)、認証の課題に対応できるようになりましたが、現在はハードコードされた資格情報のみを使用しています。ユーザーにユーザー名とパスワードの入力を求めたい。Androidのドキュメントによると、メソッド内でgetPasswordAuthentication
「通常、ユーザーに必要な入力を求める」.
これはどのように可能ですか?UI スレッドをブロックせずに、実行できない/すべきではないことがわかっている場合、ダイアログを表示し、ユーザー入力を待ち、入力された資格情報を取得して返すには、すべてそのメソッド内で行うことができますか?
編集2:
Authenticator クラスの使用例はほとんどまたはまったくありませんが、私が見つけたものは、getPasswordAuthentication
. Apache Http クライアントに戻す必要があるかもしれません...
最終編集:
私はまだ HttpURLConnection を使用していますが、エドワードが以下に提案したことに沿って何かをしています。認証チャレンジを処理し、ユーザーに入力を求めるための構成可能なクラスがないように見えるので、手動でこれを行っています。