【问题标题】:Get Request Information from Promise Or Response Guzzle 6.0从 Promise 或 Response Guzzle 6.0 获取请求信息
【发布时间】:2016-07-12 17:35:12
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 请说明您是如何发送请求的。

标签: php promise guzzle guzzle6


【解决方案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

【讨论】:

  • 但是那会得到响应信息不是吗?我想要我发送给请求的请求信息。我的问题不清楚吗?
  • 会试一试,让您随时了解最新情况。谢谢你的领导
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-17
  • 2016-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
相关资源
最近更新 更多