Я использую Httpful PHP библиотека получать данные из API, используя JSON или XML. Мой код очень прост и возвращает ответ от URL с базовой аутентификацией.
$url = "API_URL";
$response = \Httpful\Request::get($url)
->expectsXml() // or ->expectsJson()
->authenticateWith('USERNAME', 'PASSWORD')
->send();
echo "{$response}";
Я успешно отображаю весь ответ, но как мне вернуть одну переменную?
Например, если бы я хотел получить город от каждого человека, как бы это выглядело? я пытался echo "{$response->body->city}";
но это не похоже на работу.
XML, который возвращается API, отформатирован так:
<ArrayOfPERSON xmlns:i="xxx" xmlns="xxx">
<PERSON>
<CITY></CITY>
<COUNTRY></COUNTRY>
<STATE></STATE>
<STREET1></STREET1>
<STREET2></STREET2>
<WORKPHONE></WORKPHONE>
<ZIP></ZIP>
</PERSON>
</ArrayOfPERSON>
А переключение заголовка на JSON имеет данные в формате:
[
{
"STREET1": """STREET2": """CITY": """STATE": """ZIP": """COUNTRY": """WORKPHONE": ""}
]
Если посмотреть на структуру JSON, то получается, что ответ является вложенным.
Поэтому я считаю, что вам нужно получить доступ к телу так:
echo $response->body[0]->STREET1;
Примечание: всегда полезно изучить $response
просто делая var_dump($response)
когда вы не можете понять, как перемещаться по нему. Простой взгляд на получающуюся структуру обычно делает ответ совершенно ясным!
Других решений пока нет …