0

アプリケーションでHttpsURLConnectionを使用して送受信された、(少なくとも)ヘッダーと(オプションで)暗号化されていないメッセージの本文をログに記録できる必要があります。これはこれに似ているはずです。

それを行う簡単な方法はありますか(たとえば、それを有効にするためにいくつかのフラグを設定します)?

4

1 に答える 1

1

複雑な作業ソリューション

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番目のアプローチで成功した場合はお知らせください。

于 2013-03-24T14:20:20.053 に答える