2017-11-30 9 views
0

I 다음 로그인 컨트롤러가 : - : 클라이언트 오류 사용하여 PHP는 예외

public function doLogin(Request $request) 
    { 

     $client = new GuzzleHttp\Client(['base_uri' => 'https://domainname/api/v1/']); 
     $r = $client->request('POST', 'login', [ 
      'form_params' => [ 
       'username' => $request->username, 
       'password' => $request->password, 
       'platform' => 'web' 
      ] 
     ]); 


     if ($r->getStatusCode() !== '200') { 
      return back()->with('errors','Invalid User Name or password'); 
     } 
} 

자격 증명이 잘못되면

, 오류 페이지가 RequestException.php 라인 (113)에

ClientException을 보여주는를 : POST https://domainname/api/v1/login401 Unauthorized 응답 결과 : { "오류": "invalid_credentials"} 내가 위의 코드에 대한 PHP는 예외를 (시도 및 캐치)를 사용할 수있는 방법

합니다.

+1

/잡기/finally 블록을하려고 사용하는 방법에 대한 문서를 검토하십시오 그것은 일 – Scuzzy

답변

1

try/catch 블록은 매우 간단합니다. try 블록에 예외를 던질 코드를 래핑하고 catch 블록에 던져진 예외 유형을 catch해야합니다.

그것은 ClientException 또는 RequestException A가 슬로우되었는지 여부를 질문에서 명확하지 않았다, 그래서 나는 일반적인 Exception으로 catch 블록을 typehinted했습니다. 적절한 Exception 클래스를 힌트로 입력하여이를 조입니다.

use Exception; 
use GuzzleHttp\Client; 

public function doLogin(Request $request) 
{ 
    $client = new Client(['base_uri' => 'https://domainname/api/v1/']); 

    try { 
     $response = $client->request('POST', 'login', [ 
      'form_params' => [ 
       'username' => $request->username, 
       'password' => $request->password, 
       'platform' => 'web', 
      ], 
     ]); 
    } 
    catch (Exception $exception) { 
     return back()->with('errors', 'Invalid username and/or password'); 
    } 

    // Your code for a successful login 
} 
+0

http://php.net/manual/en/language.exceptions.php, 내가이 포함되어있다 "\ GuzzleHttp \ 예외를 사용 ClientException; " – user2873860