2014-05-04 26 views
2

我最近使用了Guzzle來刮取URL,並且這在沒有錯誤時工作正常。在捕捉異常時使用Guzzle的isSuccessful方法

然而,如果有,例如404,假設

$response = $client->get('http://www.google.com/test')->send(); 

手冊(Response Status Line)提出,然後上面的代碼會允許我這樣稱呼

$response->isSuccessful(); 

send()拋出一個ClientErrorResponseException時收到請求時出錯。拋出的異常是那麼如下

Guzzle\Http\Exception\ClientErrorResponseException 
Client error response 
    [status code] 404 
    [reason phrase] Not Found 
    [url] http://www.google.com/test 

,捕獲該異常明顯阻止我的應用程序停止,但隨後意味着我沒有在其上調用各種isX方法響應對象。

在某種程度上,清楚地捕捉異常給出了與isSuccessful相同的答案,但上述手冊頁中的某些其他方法也可以使用。

我在做什麼錯?

回答

5

您可以指定['exceptions' => FALSE]作爲請求選項。見 https://github.com/guzzle/guzzle/blob/master/docs/clients.rst#exceptions

或者,當你捕獲異常,你仍然可以得到響應:

catch (\GuzzleHttp\Exception\ClientException $e) { 
    $response = $e->getResponse(); 
} 

http://guzzle3.readthedocs.org/http-client/client.html#exceptions

榮譽屬於以下兩個條件指出這一點在Github上

+0

感謝您的支持。 –