<?php
$this->client = new 'GuzzleHttp'Client;
try {
$response = $this->client->request('get', $url);
$result = json_decode($response->getBody());
Log::save($result);
} catch (RequestException $e) {
Log::save($e->getMessage());
}
如果目标页面有内部服务器错误500的情况,我会得到错误消息Client error: 404
,实际上目标页面已经显示了错误是什么,如果我使用浏览器打开它,我想保存这些PHP错误消息的日志,但我不知道如何得到当使用Guzzle
有两种不同的方法可以继续:
- 如果你正在使用Guzzle 6+,你正在使用默认HandlerStack(创建没有处理程序
new 'GuzzleHttp'Client()
的客户端;默认行为是针对请求的抛出一个GuzzleHttp'Exception'ServerException
异常。在这种情况下,你所要做的就是把你的请求包装在一个try/catch块中(如上所示)。 - 如果您正在手动创建您的HandlerStack
$stack = new 'GuzzleHttp'HandlerStack(); $client = new 'GuzzleHttp'Client(['handler' => > $stack,])
;那么'GuzzleHttp'Middleware::httpErrors
中间件没有被加载到堆栈中,你将不得不在你自己的中间件中捕获它,或者通过传递一个可调用的'on_headers'请求选项。
引用:
- Guzzle请求选项- http_errors
- Guzzle Handlers and Middleware
- Guzzle请求选项- on_headers