2017-01-30 1 views
0

Ich bin ein absoluter Anfänger in PHP (I von Java kam) und ich habe folgendes Problem damit zusammen, wie eine Ausnahme zu behandelnWie kann ich eine Guzzle ClientException korrekt behandeln? Kann ich meinen Aufruf in einen Java-try-catch-Block in PHP einfügen?

ich verwende Guzzle einen Anruf an einen REST auszuführen Web-Service, so etwas wie diese:

$client = new Client(); //GuzzleHttp\Client 

    $response = $client->get('http://localhost:8080/Extranet/login', 
     [ 
      'auth' => [ 
       $credentials['email'], 
       $credentials['password'] 
      ] 
     ]); 

    $dettagliLogin = json_decode($response->getBody()); 

Wenn in der Antwort meines Web-Service reurns eine vorhandenen Benutzerinformationen ich kein Problem habe.

Wenn der Benutzer meiner Web-Service Rückkehr etwas wie diese nicht vorhanden ist:

[2017-01-30 11:24:44] local.INFO: INSERTED USER CREDENTIAL: [email protected] dddd 
[2017-01-30 11:24:44] local.ERROR: exception 'GuzzleHttp\Exception\ClientException' with message 'Client error: `GET http://localhost:8080/Extranet/login` resulted in a `401 Unauthorized` response: 
{"timestamp":1485775484609,"status":401,"error":"Unauthorized","message":"Bad credentials","path":"/Extranet/login"} 

mir So scheint es, dass der Kunde in diesem Fall eine ClientException wirft.

Mein Zweifel ist: kann ich diese setzen $ client-> get (...) in so etwas wie ein Java try catch Block so, wenn ein ClientException catched ich es Erstellen einer benutzerdefinierten Antwort handhaben kann ?

Tnx

+0

http://docs.guzzlephp.org/de/latest/quickstart.html#exceptions und http://docs.guzzlephp.org/en/latest/request-options.html#http-errors –

+0

http://php.net/manual/de/language.exceptions.php – Nanne

Antwort

2

Wenn Sie das ähnlich wie try catch-Block verwenden möchten.

Sie könnten die Guzzle Ausnahme verwenden, wie es hier angegeben ist vorbei:

http://docs.guzzlephp.org/en/latest/quickstart.html#exceptions http://docs.guzzlephp.org/en/latest/request-options.html#http-errors

ich den Code aus den oben docs gezupft haben:

use GuzzleHttp\Psr7; 
use GuzzleHttp\Exception\RequestException; 

try { 
    $client->request('GET', 'http://localhost:8080/Extranet/login'); 
} catch (RequestException $e) { 
    echo Psr7\str($e->getRequest()); 
    if ($e->hasResponse()) { 
     echo Psr7\str($e->getResponse()); 
    } 
} 

Sie könnte die Ausnahme für jeden gewünschten Zweck modifizieren und behandeln.

Verwandte Themen