我将Laravel与Guzzle结合使用,以通过HTTP从外部API获取对象。 API返回与此类似的XML对象(https://www.w3schools.com/php/note.xml)
我需要检查响应正文的一个值。这是我的代码:
$client = new \GuzzleHttp\Client();
$res = $client->request('GET', 'https://www.w3schools.com/php/note.xml');
$stringBody = (string) $res->getBody()->getContents();
echo $stringBody;
但是我无法获得一个价值? 我尝试了不同的方法,但是没有一种有效! 例如,这种方式:
$result = starts_with($stringBody, 'Tove');
或
splitName = explode(' ', $res->getBody());
$first_name = $splitName[0];
echo $first_name;
不起作用?我认为它认为正文为空?
我尝试使用json_decode,但它不起作用或不再受支持。
有什么主意吗? 谢谢
答案 0 :(得分:1)
您从响应中得到的是xml内容。由于浏览器与XML的兼容性,因此只能看到文本。您只需要php的SimpleXML类即可根据XML节点获取内容。这是示例代码
$client = new \GuzzleHttp\Client();
$res = $client->request('GET', 'https://www.w3schools.com/php/note.xml');
$stringBody = (string) $res->getBody()->getContents();
$xml = simplexml_load_string($stringBody);
echo $xml->to;
希望这对您有所帮助。