处理Guzzle异常并获取HTTP正文

2024-02-09

当服务器返回 4xx 和 5xx 状态代码时,我想处理来自 Guzzle 的错误。我提出这样的请求:

$client = $this->getGuzzleClient();
$request = $client->post($url, $headers, $value);
try {
    $response = $request->send();
    return $response->getBody();
} catch (\Exception $e) {
    // How can I get the response body?
}

$e->getMessage返回代码信息,但不返回 HTTP 响应的正文。我怎样才能得到响应正文?


狂饮 6.x

Per the docs http://docs.guzzlephp.org/en/latest/quickstart.html#exceptions,您可能需要捕获的异常类型是:

  • GuzzleHttp\Exception\ClientException对于 400 级错误
  • GuzzleHttp\Exception\ServerException对于 500 级错误
  • GuzzleHttp\Exception\BadResponseException对于两者(这是他们的超类)

因此,处理此类错误的代码现在看起来像这样:

$client = new GuzzleHttp\Client;
try {
    $client->get('http://google.com/nosuchpage');    
}
catch (GuzzleHttp\Exception\ClientException $e) {
    $response = $e->getResponse();
    $responseBodyAsString = $response->getBody()->getContents();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

处理Guzzle异常并获取HTTP正文 的相关文章

随机推荐

  • 我对 kotlin 中的泛型有疑问

    我收到一个错误 像这样 Error 1 平台声明冲突 以下声明具有相同的 JVM 签名 getData Ljava lang Object fun 我在typeErasure2中定义 fun getData 我在 typeErasure2
  • Linux,为什么我有组权限却不能写?

    我想在我所属的员工组拥有的目录中创建一个文件 为什么我不能这样做 bmccann bmccann htpc ls l usr local lib R total 4 drwxrwsr x 2 root staff 4096 2010 07
  • RuntimeError:不允许数据库访问,请使用“django_db”标记或“db”或“transactional_db”固定装置来启用它

    我正在尝试运行 pytest 并收到此错误 RuntimeError Database access not allowed use the django db mark or the db or transactional db fixt
  • 如何覆盖 django 管理站点中的删除确认页面?

    在我的 django 1 4 项目中 我需要覆盖管理站点中的删除确认页面 并执行一些额外的任务模型 我找到了通用的DeleteView 但没有找到有关如何使用它的任何好的帮助 要覆盖管理员默认确认页面 请定义您自己的admin delete
  • YouTube API V3 中的 YouTube.Channels.List 在 Android 中仅返回一个频道

    我正在使用 YouTube API 创建一个应用程序 在这里 我想列出与电子邮件 ID 相关的所有频道 因此我编写了以下代码 这段代码的问题是它只返回一个通道 默认通道 但我想要所有通道的列表 这是代码 YouTube youTube ne
  • 谓词“contracting/1”是否会恢复已删除的不一致值?

    这个问题是在另一个问题之后提出的我之前发过帖子 https stackoverflow com q 36260440 2936460关于 Prolog 中的自定义标签 是否contracting 1谓词 当在自定义标签谓词中对变量进行赋值之
  • 在 omnetpp 中找不到类“simpleModule”

    我正在 omnet 中编写自己的简单模块 在 omnet IDE 中 我创建了三个简单的模块 之后我使用这些模块创建了一个 网络 它正在成功构建 但是每当我尝试模拟它时它都会显示 网络期间模块 cModule NetworkTopology
  • CLR 集成中的套接字通信

    套接字通信在 CLR 集成中表现良好吗 例如 我在 CLR Integration 中创建了一个 PROC 它从表中获取所有数据 并且只想将数据发送到 TCP 服务器 命令 CREATE ASSEMBLY TcpClr FROM G Tcp
  • 如何向打字稿函数添加可选回调?

    我可以进行 javascript ajax 调用 如下所示 getJSON http localhost 62178 document filename c test dave docx function data console log
  • IE 不清除后续浮动

    我试图让两个 div 浮动到页面的两侧 文本在它们之间流动 第二个 左对齐 div 的顶部应与第一个 右对齐 div 的底部齐平 下面的代码在 FF Chrome Opera 等中运行良好 但在 IE 中无法正确清除 两个 div 都出现在
  • 使用 jasmine.createSpyObj 实用程序构建 SpyObj 时声明 getter 属性?

    假设我有一堂课 class MyRealClass get propOne return stuffFromTheServer 测试的时候我想实现这个功能 const mockClass get propOne return someStu
  • 按后退按钮时出现“找不到类 android.transition.Transition”异常

    我有一项活动一次托管一个片段 并在两个片段之间交换 片段 A 使用按钮启动片段 B 片段 B 使用按钮或后退按钮启动片段 A 使用自定义按钮从片段 A 到 B 以及从 B 到 A 时一切正常 问题是当我使用后退按钮从片段 B 转到 A 时
  • SQL 过滤掉不太具体的行

    我的表数据看起来像 Col1 Col2 Col3 1 2 NULL 1 2 3 1 NULL NULL 1 5 NULL 2 NULL NULL 我想编写一个查询 以便只获得最具体的条目 IE 在上面的示例中 row1 比 row3 更具体
  • 针对不同线条的多个 HoverTools(散景)

    我在散景图中有多条线 并且我希望 HoverTool 显示每条线的值 但使用之前的 stackoverflow 答案中的方法不起作用 https stackoverflow com a 27549243 3087409 https stac
  • 工作组之间的 OpenCL 同步

    是否可以同步 OpenCL 工作组 例如 我有 100 个工作组 每个工作组只有一个项目 不要问我为什么 这是一个例子 我需要对每个工作项设置障碍 以确保所有工作组都会在这 100 个工作组中的每个工作项达到此障碍点后继续 不 你不能 您可
  • postgres - 具有递归

    我期望以下内容返回所有元组 将层次结构中的每个父级解析到顶部 但它只返回最低级别 其 ID 在查询中指定 如何返回给定 level id 的整个树 create table level level id int level name tex
  • 编辑 jQuery 数据表信息

    我在用Jquery数据表 https datatables net 展示我的桌子 我有一列记录为 活动 或 非活动 现在我想在显示 显示 72 个条目中的 1 到 10 之后立即显示具有活动和非活动值的列数 My table like li
  • 更多 Passport.js 问题 - 表单提交挂起

    我正在设置我认为可能最简单的身份验证 站点在登录屏幕上加载 用户在表单中输入凭据 提交时我使用 Passport JS 和 Sequelize 来检查凭据 大多数内容都是从各种教程或 Passport 网站本身复制的 无论我做什么 更改或尝
  • Pandas GroupBy - 仅显示具有多个唯一特征值的组

    我有一个数据框df things看起来像这样 我想在训练之前预测分类的质量 A B C CLASS al1 bal1 cal1 Ship al1 bal1 cal1 Ship al1 bal2 cal2 Ship al2 bal2 cal2
  • 处理Guzzle异常并获取HTTP正文

    当服务器返回 4xx 和 5xx 状态代码时 我想处理来自 Guzzle 的错误 我提出这样的请求 client this gt getGuzzleClient request client gt post url headers valu