我在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();