4

CFHTTPMessageメソッド (GET) が追加されたCFHTTPMessageRefオブジェクト、Web アプリケーション サーバーの URL、および日付と認証ナンスを含むいくつかのカスタム ヘッダーを含む のラッパー クラスを使用しています。

特定のデータを返すメソッドと URL を取得する際に問題が発生しています。私は認証ノンスを解決したと思います。

Web アプリケーションに送られる生のリクエストを見て、すべてが適切にフォーマットされていることを確認することで、これをトラブルシューティングしたいと思います。

私の質問は:CFHTTPMessageRefオブジェクト (例: messageRef) がある場合、このメッセージから出てくる生の HTTP 要求をログに記録する方法はありますか?

私は次のことを試しましたがEXC_BAD_ACCESS、そのバイトにアクセスしようとするとシグナルが表示されます:

CFDataRef messageData = CFHTTPMessageCopyBody(messageRef);

アドバイスをありがとう。

別の方法として、交換ネットワークでパケット スニファーを使用することは可能ですか? ラップトップ デバイスで実行できますettercapが、ローカル ワイヤレス ネットワークで iPhone が何をしているかをスニッフィングする方法がわかりません。

4

2 に答える 2

9

以下はうまくいきました:

NSData *d = (NSData *)CFHTTPMessageCopySerializedMessage(messageRef);
NSLog(@"%@",[[[NSString alloc] initWithBytes:[d bytes] length:[d length] encoding:NSUTF8StringEncoding] autorelease]);

これが他の人に役立つことを願っています。

于 2008-12-08T23:35:44.993 に答える
0

バイトにアクセスするときに EXC_BAD_ACCESS を取得する必要がある唯一の理由は、messageData が NULL (HTTP 本文なし) であり、逆参照している場合です。

注意点: HTTP 本文は「生のリクエスト」ではありません。ヘッダーや実際の HTTP 命令 (GET/POST/ETC) は含まれません。body コンテンツを実際に設定していない場合は、nil になります。

CFHTTPMessageRef 値が適切に初期化されていない可能性があります (可能性は低いですが)。CFHTTPMessageCopyBody 行にブレークポイントを設定し、デバッガー コンソール ウィンドウに移動して、テキスト入力カーソルをこのウィンドウの最後の行に設定し、「po messageRef」と入力して、デバッガーでこれを確認します。有効に初期化されている場合は、CFTypeID メッセージが表示されます。

于 2008-12-08T22:25:57.087 に答える