1

URL、送信された本文など、送信したリクエストに関する情報を取得したい.プロミスを使用する非同期機能を使用しています(以下の例)

$client = new \GuzzleHttp\Client();

return  new \GuzzleHttp\Psr7\Request\Request('POST', $this->getUrl(), $this->getHeaders(), $this->getBody());

プロミスまたはレスポンスからリクエスト情報を取得する方法はありますか?

これを尋ねている理由は、リクエストに関する情報を後でデータベースに保存する必要があるためです。これは、リクエストを送信する前に行うことはできません。

私がこれまでに試したことは、

  • 次の方法でプロミスから情報を取得します
    • $promise->getRequest()
    • $pomise->Request
    • $promise->request
    • $promise->getHandlers()

ありがとうございました

4

1 に答える 1

2

新しいものを初期化するときは、Requestそれを送信する必要があります。デフォルトでは送信されません。メソッドがClient呼び出されると、リクエストが送信されます。sendリクエストが完了すると、レスポンスに関するすべての情報にアクセスできます。

use GuzzleHttp\Psr7\Request;
use GuzzleHttp\Client;

$client = new Client();
$request = new Request('GET', 'https://www.google.com');
$response = $client->send($request);

$response->getHeaders(); // array of all retreived headers
$response->getStatusCode(); // http status code 
$response->getReasonPhrase(); // http status phrase

間違ったRequestオブジェクトを初期化した場合、Guzzle には同梱されていません\GuzzleHttp\Psr7\Request\Requestが、\GuzzleHttp\Psr7\Request.

リクエストを送信する正しい方法を使用すると、リクエスト情報を取得するのは次のように簡単になります。

print_r($request->getHeaders()); // array of all sent headers
echo $request->getUri(); // requested URI
于 2016-07-12T08:59:58.130 に答える