如何从 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');
$response
是Symfony\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 获取响应状态代码的主要内容,如果未能解决你的问题,请参考以下文章
如何获取返回 Http 状态代码 406 或 400 的 API 的响应 JSON
在 iOS Swift 3 中以编程方式添加 Web 视图时如何在 UIWebView 中获取响应状态代码?
从托管在 Azure 中的 Asp.net Core MVC Web App 获取“响应状态代码不表示成功:502(错误网关)”