1

我想获取有关我发送的请求的信息,例如 url、发送的正文等。我正在使用使用 Promise 的 Async 功能(示例如下)

$client = new \GuzzleHttp\Client();

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

有没有办法从承诺或响应中获取请求信息?

我问这个的原因是因为我需要稍后将有关请求的一些信息存储在数据库中,这在我发送请求之前无法完成。

到目前为止我尝试的是

  • 使用以下方法从 Promise 中获取信息
    • $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

并且您初始化了一个错误的对象,但RequestGuzzle 未附带。\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 回答