从Guzzle捕获ConnectException

时间:2017-03-12 19:03:56

标签: php guzzle

我正在尝试检索Guzzle 6中GuzzleHttp \ Exception \ ConnectException附带的错误消息。 我读到在旧版本中,这可以通过getResponse()来实现。 但是,该方法现在默认返回null。

这是我的代码:

$responses = Pool::batch($client, $requests($this->list), array(
    'concurrency' => 15,
));

foreach ($responses as $event) {
    $classname = get_class($event);
    $raw = print_r($event,1);
    if ($classname == "GuzzleHttp\Exception\ConnectException") {
        $response = json_encode((string)$event->getResponse());
    }
    echo $response;
  }

$回复是空的。 但是,$ raw包含以下行:

[0] => GuzzleHttp\Exception\ConnectException Object
    (
        [request:GuzzleHttp\Exception\RequestException:private] => GuzzleHttp\Psr7\Request Object
            (
                [method:GuzzleHttp\Psr7\Request:private] => GET
                ....
            )

        [response:GuzzleHttp\Exception\RequestException:private] => 
        [handlerContext:GuzzleHttp\Exception\RequestException:private] => Array
            (
                [errno] => 6
                [error] => Could not resolve host: mydomain.it
                [url] => http://mydomain.it/
                [content_type] => 
                [http_code] => 0
                ....       

如何检索“无法解析主机:mydomain.it”消息? 我发现的只是“你需要抓住错误”。但是当我使用Pool :: batch并且所有内容已经在我的响应数组中时呢?

1 个答案:

答案 0 :(得分:0)

使用$event->getMessage()(异常消息)代替$event->getResponse(),因为没有连接,所以没有响应