簡體   English   中英

捕獲異常時使用Guzzle的isSuccessful方法

[英]Using Guzzle's isSuccessful method when catching exceptions

我最近使用Guzzle抓取了一個URL,並且在沒有錯誤的情況下可以正常工作。

但是,如果有例如404

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

手冊(“ 響應狀態行” )建議您使用上面的代碼給我打電話

$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相同的答案,但是上述手冊頁上的其他一些方法也很有用。

我究竟做錯了什么?

您可以指定['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上指出這一點,以下兩點均表示感謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM