gpt4 book ai didi

laravel - 处理 GuzzleHttp 上的客户端错误异常

转载 作者:行者123 更新时间:2023-12-02 14:50:05 24 4
gpt4 key购买 nike

我正在尝试处理请求状态代码,主要是检查状态是否为 200,以防无法处理。我使用一个名为“GuzzleHttp\Client”的包,当出现 404 时,它会给我一个错误:

Client error: `GET https://api.someurl---` resulted in a `404 Not Found` response:
{"generated_at":"2017-09-01T16:59:25+00:00","schema":"","message":"No events scheduled for this date."}

但是屏幕中显示的格式是我想要更改的,所以我试图捕获并在 View 上给出不同的输出。但不起作用,它仍然给我带来红屏错误。

try {
$client = new \GuzzleHttp\Client();
$request = $client->request('GET', $url);
$status = $request->getStatusCode();
if($status == 200){
return $status;

}else{

throw new \Exception('Failed');
}

} catch (\GuzzleHttp\Exception\ConnectException $e) {
//Catch errors
return $e->getStatusCode();

}

最佳答案

好吧,如果你想坚持使用 try-catch,你需要做这样的事情:

$client = new \GuzzleHttp\Client();

try {
$request = $client->request('GET', $url);
} catch (\GuzzleHttp\Exception\ConnectException $e) {
// This is will catch all connection timeouts
// Handle accordinly
} catch (\GuzzleHttp\Exception\ClientException $e) {
// This will catch all 400 level errors.
return $e->getResponse()->getStatusCode();
}

$status = $request->getStatusCode();

如果捕获没有被触发,$request 将成功,这意味着它的状态代码为 200。不过,要捕获 400 错误,请确保在设置 $client 时将 http_errors 请求选项设置为 true。

关于laravel - 处理 GuzzleHttp 上的客户端错误异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46005027/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com