我想获取有关我发送的请求的信息,例如网址,正文发送等。我正在使用使用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()
谢谢
答案 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