アプリケーションでHttpsURLConnectionを使用して送受信された、(少なくとも)ヘッダーと(オプションで)暗号化されていないメッセージの本文をログに記録できる必要があります。これはこれに似ているはずです。
それを行う簡単な方法はありますか(たとえば、それを有効にするためにいくつかのフラグを設定します)?
アプリケーションでHttpsURLConnectionを使用して送受信された、(少なくとも)ヘッダーと(オプションで)暗号化されていないメッセージの本文をログに記録できる必要があります。これはこれに似ているはずです。
それを行う簡単な方法はありますか(たとえば、それを有効にするためにいくつかのフラグを設定します)?
hereの Delegator クラスを使用して、カスタム SSLSocketFactory と SSLSocket のサブクラスを実装しました。Delegator は、上位階層のスーパークラスでメソッド ルックアップを実行するように拡張されました。
ここからデモ プロジェクトをダウンロードして、その動作を確認できます。
SSL 層の実装には、org.apache.harmony.xnet.provider.jsse.Logger クラスを使用する独自のロギング コードが含まれています。パラメーターの名前を jsse システム プロパティから読み取ります。パラメーターの名前が定義されている場合、conn_state、prf、alert、ssocket、record、engine、および socket の値のコンマ区切りリストが含まれる場合があります。
デフォルトでは、出力は System.err に送られます。
だから私は出力をlogcatにリダイレクトしました
$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start
しかし、(私が思うに)Logger クラスで使用される前に jsse システム プロパティを初期化できませんでした。3 つのオプションのうち、adb シェル setprop で設定し、/data/local.prop を作成し、MainActivity クラスの静的イニシャライザで System.setProperty() で設定します。後でのみオプションが成功しました (設定値が返された後、少なくとも getProperty())。
2番目のアプローチで成功した場合はお知らせください。