大量从响应中读取值

时间:2018-12-19 11:49:23

标签: php laravel guzzle guzzlehttp

我将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;

工作正常,我的意思是它显示的主体如下图所示 enter image description here

但是我无法获得一个价值? 我尝试了不同的方法,但是没有一种有效! 例如,这种方式:

$result = starts_with($stringBody, 'Tove');

splitName = explode(' ', $res->getBody()); 
$first_name = $splitName[0];
echo $first_name;

不起作用?我认为它认为正文为空?

我尝试使用json_decode,但它不起作用或不再受支持。

有什么主意吗? 谢谢

1 个答案:

答案 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;

希望这对您有所帮助。