从Promise或Response Guzzle 6.0获取请求信息

时间:2016-07-11 14:44:19

标签: php promise guzzle guzzle6

我想获取有关我发送的请求的信息,例如网址,正文发送等。我正在使用使用promises的异步功能(例如下面的代码)

$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()

谢谢

1 个答案:

答案 0 :(得分: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