如何从 GuzzleHttp 响应中获取 HTTP 状态答案 php Laravel.



我在php Laravel开发。我收到来自 Mailgun 作为对象的 GuzzleHttp 响应,但无法从中获取状态。

对象是:

O:8:"stdClass":2:{s:18:"http_response_body";O:8:"stdClass":2:{s:6:"member";O:8:"stdClass":4:{s:7:"address";s:24:"test_of_json-4@zapara.fr";s:4:"name";s:10:"not filled";s:10:"subscribed";b:1;s:4:"vars";O:8:"stdClass":0:{}}s:7:"message";s:36:"Mailing list member has been created";}s:18:"http_response_code";i:200;}

我只需要最后一个数据对:

"http_response_code";i:200;

要将其放入变量中,例如: $http_response_code = 200;甚至只是它的价值。

要获得我上面引用的字符串,我使用

$result_ser = serialize($result);

但还不能提取变量的值。

我也试过这个: $this->resultString .= GuzzleHttpjson_decode($result_ser, true);并得到错误。

请解释一下,如何获得/提取我需要的值?

要获取响应状态代码,您可以使用函数 getStatusCode

$response = $client->request();
$statusCode = $response->getStatusCode();

而要采取响应的主体,您可以使用:

$contents = $response->getBody()->getContents();

让我们考虑您的请求是这样的

 $response = $client->get("https://example.com");
 if ( $object_res->getStatusCode() == 200 ) { // here you are checking your http status code
 }

$object_res->getStatusCode()是获取 http 状态代码的方法。

参考文档,此页面中有一个简单的示例。

我发现"mailgun/mailgun"包使用自己的HTTP客户端,该客户端也使用"RestClient",这些类是返回stdObject。

在该对象中,有包含 HTTP 响应代码的属性"http_response_code",如 200、400、401 等。

此属性可通过标准方式访问$object->property,在这种情况下,它是我的查询的解决方案。

对于任何会阅读这个问题和答案的人,我应该解释一件我没有解决的问题。

我向Mailgun API请求订阅邮件列表的成员。API 返回 stdObject,而不是 JSON 或 XML 数据。

但还有一件奇怪的事情 - 仅在请求成功时返回 stdObject。如果请求失败,您只会收到带有消息且没有代码的异常。这迫使我,如果失败,解析消息正文而不是获取和解决错误代码。

$responseObj->getStatusCode();

相关内容

最新更新