我使用以下命令请求webservice服务:
use GuzzleHttp\Client;
use GuzzleHttp\Exception\ConnectException;
try {
$client = new Client();
$response = $client->request('GET', $url); //it crashes at this line
$content = json_decode($response->getBody(), true);
}
catch (ConnectException $e) {
\Drupal::logger('amu_hal')->error('incorrect_url'.$url);
}
今天,远程服务器返回错误500。
我如何修改我的代码,使其在发生崩溃时不会使我的站点崩溃?
发布于 2017-03-04 01:29:28
我假设您所说的远程服务器是指需要很长时间连接的服务器。您可以指定请求的超时时间。
或者可能服务器返回了错误500,并且在json_decode
期间失败?您可以查看请求返回的状态码。
或者甚至可能代码没有通过您指定的行,但是异常ConnectException
没有被捕获?尝试使用Exception
作为一个通用工具来调试这种情况。
我建议您使用Drupal包装器(它在幕后使用Guzzle ),而不是直接使用Guzzle。
$client = Drupal::httpClient();
$request = $client->get($uri, ['connect_timeout' => 5]);
if ($request->getStatusCode() === 200) {
echo 'Connection Success';
} else {
echo sprintf('Error %d occurred', $request->getStatusCode());
}
https://stackoverflow.com/questions/42483950
复制相似问题