如何从 Goutte 获取响应状态代码

Posted

技术标签:

【中文标题】如何从 Goutte 获取响应状态代码【英文标题】:How can i get response status code from Goutte 【发布时间】:2020-01-10 17:46:31 【问题描述】:

我正在使用Goutte 来解析一些网站。

这是我的代码示例

$goutteClient = new Client();
$response = $goutteClient->setHeader('User-Agent', $userAgent)
->setClient($guzzleClient)
->request('GET', 'https://example.com');

$responseSymfony\Component\DomCrawler\Crawler 的实例

那么,如何获取响应状态码来检查它是 404 错误还是其他错误?

【问题讨论】:

【参考方案1】:

$goutteClient->getResponse() 会给你最后一个请求的响应对象。

完整代码为:

$res = $goutteClient->getResponse();
if ($res->getStatusCode() === 404) 

【讨论】:

【参考方案2】:

它帮助了我

if ($goutteClient->getResponse()->getStatusCode() === 404)

【讨论】:

【参考方案3】:
$status = $goutteClient->getResponse();
if($status == 404) 
[...]


【讨论】:

这行不通,你需要 $status = 并且 getResponse 返回一个对象,如果你用相同的运算符测试它,它永远不会匹配 404 正确的方式是$res = $goutteClient->getResponse(); if ($res->getStatusCode() === 404) 【参考方案4】:

以这种方式为我工作:

$response = $client->getInternalResponse();
if($response->getStatusCode() === 404)
   // NOT FOUND

【讨论】:

以上是关于如何从 Goutte 获取响应状态代码的主要内容,如果未能解决你的问题,请参考以下文章

从 <img> 标签获取 HTTP 状态代码或响应标头?

如何获取返回 Http 状态代码 406 或 400 的 API 的响应 JSON

如何从 WinHttp 请求中获取 HTTP 状态码?

在 iOS Swift 3 中以编程方式添加 Web 视图时如何在 UIWebView 中获取响应状态代码?

从托管在 Azure 中的 Asp.net Core MVC Web App 获取“响应状态代码不表示成功:502(错误网关)”

如何获取 jQuery.ajax 响应状态?