2017-02-27 1 views
0

Ich wünsche eine Webservice mit:Wie behandelt man Fehler 500, wenn man einen entfernten Server mit Frust fragt?

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); 
} 

heute der entfernten Server einen Fehler zurück 500.

Wie kann ich meinen Code ändern nicht meine Seite zum Absturz zu bringen, wenn es passiert?

Antwort

1

Ich nehme an, dass mit entfernten Server Sie einen Server meinen, der eine lange Zeit braucht, um sich zu verbinden. Sie können eine Zeitüberschreitung für die Anforderung angeben.

Oder vielleicht der Server Fehler 500 zurückgegeben und schlägt fehl, während json_decode? Sie können den von der Anfrage zurückgegebenen Statuscode überprüfen.

Oder vielleicht schlägt der Code die Zeile, die Sie angeben, aber die Ausnahme ConnectException wird nicht gefangen? Verwenden Sie Exception als Catch-All, um diese Situation zu debuggen.

Anstelle von Guzzle direkt zu verwenden, empfehle ich, dass Sie die Drupal Wrapper verwenden (die Guzzle unter der Haube verwendet).

$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()); 
} 
Verwandte Themen