2017-02-27 59 views
0

我使用請求Web服務:今天如何處理錯誤500當請求一個遠程服務器與guzzle?

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

如何修改我的代碼不會崩潰我的網站,當它發生?

回答

1

我假設通過遙遠的服務器,你的意思是一個需要很長時間才能連接的服務器。您可以指定請求的超時時間。

或者服務器可能返回錯誤500,並在json_decode期間失敗?您可以檢查請求返回的狀態代碼。

甚至可能是代碼沒有顯示您指定的行,但ConnectException異常未被捕獲?嘗試使用Exception作爲一個全面的調試這種情況。

而不是直接使用Guzzle,我建議您使用Drupal包裝(它使用下面的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()); 
} 
相關問題