在使用 Guzzle 測試 API 時捕獲異常可能具有挑戰性。本文解決了這個問題,並提供了檢索非 200 HTTP 程式碼回應的解決方案。
範例程式碼中使用事件監聽器來處理特定的 HTTP 程式碼,但仍然會拋出異常。要解決此問題,一種選擇是透過 HTTP 狀態碼處理異常。
對於 Guzzle 3 和 Guzzle 5.3,停用異常允許手動處理所有狀態代碼。只需設定“例外”=>客戶端選項中為 false。
Guzzle 3
$client = new \Guzzle\Http\Client($httpBase, array( 'request.options' => array( 'exceptions' => false, ) ));
Guzzle 5.3
$client = new \GuzzleHttp\Client(['defaults' => [ 'exceptions' => false ]] );
停用例外響應中獲取。
$response = $request->send(); $statuscode = $response->getStatusCode();
預期的狀態碼可以進行相應處理:
if (200 === $statuscode) { // Do something } elseif (304 === $statuscode) { // Nothing to do } elseif (404 === $statuscode) { // Clean up DB or something like this } else { throw new MyException("Invalid response from api..."); }
Guzzle 6
在Guzzle 6 中,使用'http_ors' =>客戶端選項中為false:
$client = new \GuzzleHttp\Client(['http_errors' => false]);
以上是測試 API 時如何處理 Guzzle 中未處理的例外狀況?的詳細內容。更多資訊請關注PHP中文網其他相關文章!