Я хочу получить информацию о отправленном мною запросе, например, URL-адрес, отправленное тело и т. Д. Я использую функцию Async, которая использует обещания (пример ниже)
$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()
Спасибо
Когда вы инициализируете новый 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
объект, жрать не поставляется с \GuzzleHttp\Psr7\Request\Request
но \GuzzleHttp\Psr7\Request
,
Теперь при правильном способе отправки запроса получение информации о запросе так же просто, как показано ниже:
print_r($request->getHeaders()); // array of all sent headers
echo $request->getUri(); // requested URI
Других решений пока нет …