Получить информацию о запросе из Promise Or Response Guzzle 6.0

Я хочу получить информацию об отправленном мной запросе, такую ​​как URL-адрес, отправленное тело и т. д. Я использую функцию Async, которая использует обещания (пример ниже)

$client = new \GuzzleHttp\Client();

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

Есть ли способ получить информацию о запросе из обещания или из ответа?

Причина, по которой я спрашиваю об этом, заключается в том, что мне нужно позже сохранить некоторую информацию о запросе в базе данных, что невозможно сделать до того, как я отправлю запрос.

То, что я пробовал до сих пор,

  • Getting the information from the promise with the following methods
    • $promise->getRequest()
    • $pomise->Request
    • $promise->request
    • $promise->getHandlers()

Спасибо


person Steve    schedule 11.07.2016    source источник
comment
Пожалуйста, покажите, как вы отправляете запросы.   -  person revo    schedule 12.07.2016


Ответы (1)


Когда вы инициализируете новый 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
person revo    schedule 12.07.2016
comment
Но что получит ответная информация нет? Мне нужна информация о запросе, которую я отправил в запрос. Мой вопрос не ясен? - person Steve; 12.07.2016
comment
попробуем и будем держать вас в курсе. Спасибо за лидерство - person Steve; 12.07.2016