жрет чтение значения из ответа - PullRequest
0 голосов
/ 19 декабря 2018

Я использую Guzzle с Laravel для получения объекта из внешнего API с помощью HTTP.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;

non работает? Я думаю, что основной текст считается пустым?

Я пытался использовать json_decode, но он не работает или больше не поддерживается.

Есть идеи? Спасибо

1 Ответ

0 голосов
/ 19 декабря 2018

То, что вы получите от ответа, - это 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;

Надеюсь, это поможет вам.

...