ネットワークにアクセスするために安全なログインが必要なワイヤレス アクセス ポイントを備えた企業ネットワーク上にいる状況に直面しています。約 30 分のアイドル時間の後、ユーザーに再認証を求めるプロンプトが表示されます。
私のアプリ (レトロフィット + okhttp を使用) では、「セッションがタイムアウトしました」が「java.io.IOException: ホスト名 'example.com' が検証されませんでした」という例外として現れます。詳しく調べてみると、「example.com」がワイヤレス アクセス ポイントの証明書に対して検証されており、証明書に関連付けられている唯一の有効なドメインはアクセス ポイントのドメイン (securelogin.arubanetworks.com) であることがわかります。これが例外をトリガーしているものです。アプリを離れてブラウザーを起動し、アクセス ポイントで再認証してアプリに戻ると、同じホスト名が検証されていないという問題が引き続き発生します。これにより、2 つの質問が残ります。
1) IOException を待って処理する以外に、このタイムアウト状況を検出するより良い方法はありますか?
2) セッションがタイムアウトすると、http クライアントがアクセス ポイントの証明書に対してホスト名を検証しようとするのをやめさせることができないようです。アプリを再起動せずに、ユーザーが (ブラウザ経由で) 再認証されたら回復する方法はありますか?