2015-08-27 3 views
5

In einem Laravel-Projekt muss ich API REST aufrufen, um entfernte Daten zu löschen.Guuzzle Curl Fehler nicht Catche von versuchen Fang Aussage (Laravel)

Mein Problem ist, dass meine Fang-Anweisung nicht Guzzle Ausnahme fangen, wenn ich einen Fehler bekam. Mein Code ist der folgende:

try { 
    $client = new \GuzzleHttp\Client(); 
    $request = $client->delete(Config::get('REST_API').'/order-product/'.$id); 
    $status = $request->getStatusCode(); 
} catch (Exception $e) { 
    var_dump($e);exit(); 
} 

Die Ausnahme von Laravel gefangen ist, aber nicht in meinem Fang Aussage. Die Ausnahme von Guzzle throwed ist:

GuzzleHttp\Ring\Exception\ConnectException 

Es in meiner Linie angehoben 3 von Skript und es nicht in meinem Skript gefangen. Könnten Sie mir eine Möglichkeit geben, die Guzzle Exception zu fangen?

soll ich zeigen, dass ich bereits diesen Posten gesehen, aber er eine gute Antwort nicht erhalten: How to resolve cURL Error (7): couldn't connect to host? und Catching cURL errors from Guzzle

Antwort

2

Ich hatte ein ähnliches Problem und löste es die folgenden thing.I mit Ihrem Beispiel und angegeben verwendet haben, die Inline-Kommentare für Sie zu verstehen.

try { 
    $client = new \GuzzleHttp\Client(); 
    $request = $client->delete(Config::get('REST_API').'/order-product/'.$id); 
    $status = $request->getStatusCode(); 
    if($status == 200){ 
     $response = $response->json(); 

    }else{ 
     // The server responded with some error. You can throw back your exception 
     // to the calling function or decide to handle it here 

     throw new \Exception('Failed'); 
    } 

} catch (\Guzzle\Http\Exception\ConnectException $e) { 
    //Catch the guzzle connection errors over here.These errors are something 
    // like the connection failed or some other network error 

    $response = json_encode((string)$e->getResponse()->getBody()); 
} 

Hoffe, das hilft!

+0

Danke, es funktioniert! – jedema

2

Vielleicht ist diese Ausnahme die Exception Klasse nicht erstreckt. Sie können versuchen, es zu fangen mag:

try { 
    $client = new \GuzzleHttp\Client(); 
    $request = $client->delete(Config::get('REST_API').'/order-product/'.$id); 
    $status = $request->getStatusCode(); 
} catch (\GuzzleHttp\Ring\Exception\ConnectException $e) { 
    var_dump($e);exit(); 
} catch (Exception $e) { 
    // ... 
} 
+0

Sorry, aber ich hatte das bereits versucht. Ich weiß nicht, warum es nicht funktioniert. – jedema

1

Wahrscheinlich möchten Sie \Exception (im Stammnamespace) abfangen, indem Sie entweder den umgekehrten Schrägstrich in der catch-Anweisung oder eine use Exception-Anweisung hinzufügen.

0

einfach die Antwort auf die neuen Guzzle Ausnahme Namespace Aktualisieren

try { 
    $client = new \GuzzleHttp\Client(); 
    $request = $client->delete(Config::get('REST_API').'/order-product/'.$id); 
    $status = $request->getStatusCode(); 
} catch (\GuzzleHttp\Exception\ConnectException $e) { 
    var_dump($e);exit(); 
} 
5

Es arbeitete mit mir, wenn ich

verwendet

\ GuzzleHttp \ Exception \ Connect

statt

\ Guzzle \ Http \ Ausnahme \ ConnectException

Verwandte Themen