Используйте данные, полученные через API с curl - PullRequest
0 голосов
/ 27 декабря 2011

Я пытаюсь получить данные из API, используя curl с этим кодом:

$xml_data = '<name>foobar%</name>';

$URL = "http://www.example.com/api/foobar.xml";

$ch = curl_init($URL);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml_data");
$output = curl_exec($ch);
curl_close($ch);

Когда я выполняю этот скрипт php, все работает хорошо, и правильные данные XML возвращаются в мой браузер.У меня вопрос, как я могу проанализировать эти данные?

(Если вы порекомендуете сделать все это, используя другой метод, например, curl, не стесняйтесь сказать мне)

Ответы [ 3 ]

1 голос
/ 27 декабря 2011

Вы можете использовать следующий вид кода.

$xml = simplexml_load_string($output);

И если вам нужно пройти через его узел, вы можете просто пройти через те, которые приведены в примере ниже.

Пример:

$imageFileName = $xml->Cover->Filename;

Если вам нужно, вы также можете использовать xpath.Пример:

$nodes = $xml->xpath(sprintf('/lfm/images/image/sizes/size[@name="%s"]', 'extralarge'));

Удачи!

Прасад.

0 голосов
/ 28 декабря 2011

Проверьте PHP документы для функции curl_exec - обратите внимание, что возвращаемое значение будет true / false, если не включен CURLOPT_RETURNTRANSFER, в этом случае это будут результаты вызова.

Вот обновленный пример, который возвращает данные в $output и получает данные о переводе через curl_getinfo():

$xml_data = 'foobar%';

$URL = "http://www.example.com/api/foobar.xml";

$ch = curl_init($URL);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
curl_setopt($ch, CURLOPT_POSTFIELDS, "$xml_data");
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

print_r($info);
print_r($output);
0 голосов
/ 27 декабря 2011

Вы можете использовать simplexml для его анализа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...