2

作業中のシステムに使用する汎用HTTPファイルアクセスAPIがあります。可能な限り柔軟にするために、HTTP文字列の形式で要求および応答データを返します。

現在、 AWS SDK forPHP2を介してS3と対話するバージョンを実装しています。

S3Clientが操作を実行するときに行うRequestおよびResponseHTTPリクエストをすばやく取得する簡単な方法はありますか?そうでない場合、それを偽造する必要がないように私が使用できるより断片的な方法はありますか?

基本的に、リクエストとレスポンスの両方のフルテキストをオンデマンドで、または少なくとも関連データ(ヘッダー、レスポンスコード、URLなど)にアクセスして、フレームワークのリターンデータを適切に入力できるようにします。

ありがとう。

4

2 に答える 2

4

コマンドオブジェクトから要求オブジェクトまたは応答オブジェクトのいずれかを取得できます。$s3のインスタンスを保持していると仮定すると、次のAws\S3\S3Clientようなことができます。

$command = $s3->getCommand('ListObjects', array('Bucket' => '<bucket-name>'));
$request = $command->getRequest();
$response = $command->getResponse();

これらのオブジェクトには、本文、ヘッダー、ステータスコードなどを表示するためのメソッドがあり、それらを文字列にキャストして文字列の形式を確認できます。

コマンドの実行中に要求と応答をすばやく確認したい場合は、ワイヤーロガーを接続して、STDOUT(またはSTDERR)で何が出力されるかを確認できます。

$s3->addSubscriber(\Guzzle\Plugin\Log\LogPlugin::getDebugPlugin());
$s3->listObjects(array('Bucket' => '<bucket-name>'));
于 2013-01-23T21:35:53.850 に答える
1

使用可能にするメソッドを確認するにGuzzle\Http\Clientは、の祖先クラスであるクラスを調べる必要があります。S3Client自分の子でこれらのメソッドの一部をいつでもオーバーライドして、S3Clientこの情報に簡単にアクセスできるようにすることができます。

最終的に、探しているデータはクラスのオブジェクトに存在しGuzzle\Http\Message\Response、それが返されると私は信じていfrom Guzzle\Http\Client::send()ます。

したがって、おそらく独自の実装ではS3Client、メソッドをオーバーライドしsend()てHTTPリクエストを送信し、必要に応じてレスポンスデータを処理できます。

于 2013-01-18T21:16:07.767 に答える