Laravel - 捕获 cURL 异常的正确方法

2024-03-30

我正在使用 cURL 构建一个简单的 REST API 包,并希望捕获错误然后返回视图。如果我 dd($e) 我可以抛出错误,但如果我尝试返回一个视图,它只会继续执行 catch 函数之后的代码。 PHP 不应该终止进程并直接进入登录视图吗?

try{    
    $response = Http::timeout(2)->asForm()->post('https://' . $this->ip_address, [
        'username' => $this->username,
        'password' => $this->password
    ]);

} catch(\Illuminate\Http\Client\ConnectionException $e) {
    return view('auth.login');
}

如果我遇到 cURL 超时异常,我现在只想返回登录页面。如果我输入一个伪造的IP地址,显然它会在2秒后超时,这就是我正在测试的。

使用 Laravel Http 客户端,如何捕获该错误并显示身份验证登录视图?


与 Guzzle 不同,如果响应是,Laravel 的 HttpClient 不会抛出错误> 400.

您应该简单地使用 if 语句来检查响应状态代码。看:https://laravel.com/docs/8.x/http-client#error-handling https://laravel.com/docs/8.x/http-client#error-handling

您可以调用以下检查:

// Determine if the status code is >= 200 and < 300...
$response->successful();

// Determine if the status code is >= 400...
$response->failed();

// Determine if the response has a 400 level status code...
$response->clientError();

// Determine if the response has a 500 level status code...
$response->serverError();

因此,在您的情况下,您可以简单地执行以下操作:

$response = Http::timeout(2)->asForm()->post('https://' . $this->ip_address, [
    'username' => $this->username,
    'password' => $this->password
]);

if ($response->failed()) {
    return view('your-view')->with([
        'message' => 'Failed.',
    ]);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel - 捕获 cURL 异常的正确方法 的相关文章

  • 为什么这评估为 true

    为什么这评估结果为真
  • 点击 %40 变为 %2540

    当单击包含 符号的链接时 该网址给我 40 这就是我想要的 但是一旦我点击它 一秒钟后它就在我点击后变成了 2540 单击是在电子邮件内 然后定向到网站 其中 40 更改为 2540 我怎样才能让它停止变化 它现在得到这样的参数 email
  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja
  • Readfile 从大文件中读取 0 字节?

    我正在尝试通过以下方式发送一个大文件readfile 但是 没有任何内容发送到浏览器 并且readfile 回报0 not false 我尝试发送的文件大小为 4GiB 并且可由 PHP 读取 我正在设置set time limit 0 以
  • Symfony2:为什么请求传递到受 Symfony2 中 AppCache 影响的 Kernel.Terminate EventListener

    在我的 Symfony2 2 应用程序中 我使用 onKernelTerminate EventListener 以便我可以在渲染响应后进行一些 繁重 处理 以便用户收到更快的响应时间 在我的控制器中 我在请求上设置了一个属性 以便当事件侦
  • php源代码到PO文件生成器

    我必须将我的所有回显 打印字符串转换为PHP源代码代码文件到PO file 为了语言翻译 有批次吗对流器可用于相同的 我如何做到这一点 make gettext在您的服务器上运行 setup a 翻译适配器 例如带有 gettext 适配器
  • 使用 ImageMagick 和 PHP 将 PNG 转换为 JPG 并将透明背景设置为白色

    将图像从 PNG 转换为 JPEG 时 如何使用 ImageMagick 带有 php 扩展 将透明背景设置为白色 在撰写本文时 您尚未指定正在使用哪个扩展 但如果您使用命令行 则命令将是 convert image png backgro
  • Laravel S3 检索视频以流式传输

    我通过 Laravel 应用程序将视频存储到 Amazon S3 效果很好 但我无法 流式传输 它们 这是例如 URL https website com video 342 qt api token a5a18c9f f5f6 5d66
  • php中的条件格式化html表与时间戳比较

    echo table style width 100 tr echo td Order td echo td Destination td echo td Location td echo td Status td echo td Time
  • CodeIgniter 控制器 - JSON - AJAX

    我正在尝试通过 AJAX 使用 CodeIgniter 发送表单构建 并尝试使用 JSON 获取响应 但是 我只在打开开发人员选项卡时看到响应 我什至不确定这是否实际上是响应 因为它显示了两个 json 数据 它所显示的只是加载旋转器 然后
  • 如何防止在 PHP 中使用超出“使用”范围的特征方法

    我想知道是否有任何方法可以防止在 PHP 的任何类上下文之外使用特征方法 让我用一个简短的例子来解释我想要什么 这是我当前的代码 File MyFunctions php trait MyFunctions function hello w
  • 在 Yii 的标准中如何获得计数 (*)

    我正在尝试构建一个具有以下内容的查询group by属性 我正在尝试得到id和count它一直告诉我count is invalid列名 我怎样才能得到count来自group by询问 工作有别名 伊伊 1 1 11 其他不及格 crit
  • PHP 中的引用

    我正在编写一个自定义博客引擎 并且希望拥有类似于 Wordpress 的引用 我可以查看 WordPress 源代码 但我真的更喜欢某种教程 但到目前为止我还没有找到 有没有关于在 PHP5 中实现 trackbacks 或 pingbac
  • 如何从 Laravel 执行存储过程

    我需要在表单提交数据后执行存储过程 我让存储过程按照我想要的方式工作 并且我的表单正常工作 我只是不知道从 laravel 5 执行 sp 的语句 它应该是这样的 执行 my stored procedure 但我似乎在网上找不到类似的东西
  • Stream_context_set_params 不适用于 ssh2.sftp 包装器

    我想使用类似的功能here http www php net manual en function stream notification callback php 请检查以下代码 function notify notification
  • phpActiveRecord 日期时间格式不正确

    当尝试使用 phpActiveRecord 在表中创建记录时 出现以下错误 Invalid datetime format 1292 Incorrect datetime value 2013 06 20 11 59 08 PDT for
  • 从字符串中获取数字

    我有一个字符串 例如 lorem 110 ipusm 我想获取 110 我已经尝试过这个 preg match all 0 9 string ret 但这正在返回 Array 0 gt 1 1 gt 1 2 gt 0 我想要这样的东西 Ar
  • 如何使用 php 将 *.xlsb 转换为数组或 *.csv

    我正在尝试转换 xlsb文件到php array or csv文件 或至少 xls 我尝试使用PHPExcel 但看起来它无法识别该文件中的内容 我注意到 你可以重命名 xlsb文件到 zip文件 然后使用命令行解压缩unzip zip 之
  • 使用 crypt() 加密

    我目前正在做一个非常安全的登录系统 但我是 crypt 函数的新手 需要一些快速帮助 我在注册过程中使用 crypt 加密密码字符串并将其保存到数据库中 但是 我如何在登录过程中解密密钥 或者我应该怎么做 或者是否可以对提交的密码字符串进行
  • 如果产品重量超过1000克,如何以公斤为单位显示

    在 Storefront 主题中 我使用下面的代码将格式化重量从 1000g 更改为 1kg add action woocommerce after shop loop item title show weight 10 function

随机推荐

  • Jupyter - 在多个单元中拆分类

    我想知道是否有可能将 jupyter 类分成不同的单元格 可以说 first cell class foo object def init self var self var var second cell def print var se
  • 如何从 Java 最小化 JFrame 窗口?

    在我的 Java 应用程序中 我有一个 JFrame 窗口 如何从我的 Java 程序中最小化它 最小化与frame setState Frame ICONIFIED 恢复与frame setState Frame NORMAL
  • 如何更改command_not_found_handle中的当前工作目录

    我正在尝试在 Bash 中编写一个未找到的句柄 它执行以下操作 如果 1 存在并且它是一个目录 cd进去 如果 1 存在于用户定义的目录中 DEV DIR cd 进入其中 如果前面的条件不适用 则失败 现在我有这样的事情 export DE
  • 并行解决多个获取请求

    我正在尝试执行多个并行获取请求react native 但我没有得到预期的响应数据 我错误地整合了什么 async componentDidMount try let res1 res2 await Promise all fetch ap
  • 为 Azure CDN 创建服务主体失败,并出现租户权限错误

    我正在尝试将 Azure CDN 添加为服务帐户 以便将其连接到 KeyVault 遵循官方指南和其他建议 例如无法将 Microsoft Azure Cdn 服务主体添加到 Key Vault 访问策略 https stackoverfl
  • 语义 UI 浮动

    语义 UI 新手 我在文档中找不到如何 如果可能的话 浮动一个简单元素而不使其成为其他元素 如按钮或段 例如 我在页面底部有一个步骤导航 计数器 其写法如下 div class row three column div class colu
  • 停止或启动远程计算机上的服务

    我创建了一个脚本 它将根据服务的显示名称启动或停止服务 我的脚本可以在本地计算机上运行 但我想确保它可以在远程计算机和本地计算机上完成 我不知道如何让它在远程机器上工作 任何帮助 将不胜感激 serviceName Read Host Pr
  • 等待光标移过整个 html 页面

    是否可以通过简单的方式将整个html页面上的光标设置为 等待 这个想法是向用户展示在 ajax 调用完成时正在发生的事情 下面的代码显示了我尝试过的简化版本 并演示了我遇到的问题 如果一个元素 id1 设置了光标样式 它将忽略主体上设置的样
  • 使用 R 并行批量调整图像大小

    我正在尝试使用 R 批量调整数千个图像的大小 即减小文件大小 我已经使用下面的代码成功地实现了这一点 但这需要很长时间 特别是当调整大小 gt 50 000 个图像时 有什么办法可以让这个任务在多个核心上运行吗 我是并行计算方面的新手 因此
  • 如何在 Google Charts 中获取带有 svg 内图像的 png(base64)?

    如何获取 svg 内图像的 base64 检查这个Fiddle http jsfiddle net R8A8P 51 这是我从另一个问题中得到的 如果您看到第二个图形 则它不会生成覆盖该条的图像 var chart new google v
  • Gstreamer multifilesink wav 文件分割

    我在使用 gstreamer 录制流时遇到问题 我必须分别编写音频和视频 并在信号到达时切入 我的视频工作正常 但 wav 文件仍然存在问题 即使 gst launch 中的简单管道也无法正常工作 我有波形文件 我正在尝试使用 multif
  • 为什么 Rails 要为 JSON PUT 请求返回“head :no_content”?

    我跑完之后 rails generate scaffold UserRails 3 2 11 中生成的用于更新用户的控制器函数如下所示 def update user User find params id respond to do fo
  • 家长/孩子同桌

    我有如下表结构 id parent name value 1 0 aaa 2 0 bbb 3 0 ccc 4 1 111 5 1 222 6 3 333 如果父记录有子记录 我想显示父记录 Like 父代 ID 名称 第一个子代的值 1 a
  • 如何在 CodeIgniter 中使用准备好的语句

    大家好 我需要在我的网站中使用准备好的语句 我尝试使用这个 sql SELECT FROM tbl user WHERE uid id and activation key key query this gt db gt query sql
  • 实体框架查找与何处

    之间是否存在显着差异 Find id and Where x gt x Id id 这应该迫使我使用 Find over Where First 我会想象 Find 会更有效 但是我应该避免这样做吗 Where First 我问的原因是我在
  • 项目GUID不断变化

    我们有一个 VS2008 解决方案 我注意到发生了一些奇怪的事情 某些项目引用同一解决方案中定义的其他项目 作为项目引用添加 这是前一段时间完成的 直接从 VS 构建效果很好 从 MSBUILD 构建失败 我已删除项目引用并重新添加它 并且
  • npm install 与 sudo npm install -g

    对于某些包我必须运行sudo npm install g而对于其他人npm install就足够了 为什么以及有什么区别 例如 npm install g grunt cli doesn t work sudo npm install g
  • 无法使用 JavaScript 选择最接近的 h2 元素

    我希望能够选择与包含披萨选择选项的字段集最接近的 h2 标题 并使用 jQuery 设置标题的文本 到目前为止我还无法做到这一点 HTML div fieldset fieldset div
  • Breeze 和 Knockout 中的验证

    我最近使用 Knockout 和 ASP NET MVC4 将 Breeze 添加到项目中 我真的很喜欢 Breeze 它节省了大量的编码工作 我使用过 Knockout 验证 喜欢它如何验证数据输入时的属性字段文本框以及错误消息的显示方式
  • Laravel - 捕获 cURL 异常的正确方法

    我正在使用 cURL 构建一个简单的 REST API 包 并希望捕获错误然后返回视图 如果我 dd e 我可以抛出错误 但如果我尝试返回一个视图 它只会继续执行 catch 函数之后的代码 PHP 不应该终止进程并直接进入登录视图吗 tr