Настройка Odata на сервере Linux?Или парсинг одат с php? - PullRequest
0 голосов
/ 20 марта 2012

Я пытался проанализировать данные xml и json odata с помощью simplexml и json_decode, но это не работает.Я получаю бесполезные данные обратно, когда я запрашиваю данные и помещаю ссылку в адресную строку, я вижу там данные, которые мне нужны.Когда я помещаю ссылку в метод simplexml или json_decode и выполняю var_dump (), там нет ни одной из данных.

Это просто набор ссылок на оддаты, чтобы получить данные.Например,

Моя исходная ссылка, domain.com/1.0/DataService/Titles(4563)/?devid= enj...‹.

Эти данные будут отображать жанр, название,и описание, но для того, чтобы получить Жанр или Описание, мне нужно использовать этот URL-адрес:

domain.com / 1.0 / DataService / Genre (4563) /? devid = {...} или domain.com/1.0/DataService/Description(4563)/?devid= enj...‹.


Если использование oData SDK облегчает получение данных, это здорово, ноЯ прочитал установку SDK, расположенную здесь: http://odataphp.codeplex.com/. Я просто не уверен, с чего начать.

РЕДАКТИРОВАТЬ

Вот пример кода

$url = "http://api.internetvideoarchive.com/1.0/DataService/EntertainmentPrograms()?$expand=MovieCategory,Director,Copyrightholder&$select=MovieCategory/*,Director/*,Copyrightholder/*&developerid=bafd5091-a36d-4103-b435-638dc55d2122&format=atom";

$xml = simplexml_load_file("$url");

var_dump($xml);

Вы можете изменить атом на json, чтобы получить данные json.

1 Ответ

1 голос
/ 01 апреля 2012

Проблема в вашем примере кода заключается в двойных кавычках при определении $ url. PHP будет пытаться интерполировать $ expand, $ select и т. Д. Как переменные. Поскольку они не существуют как переменные в вашем коде, они просто будут удалены.

В результате вы теряете $ expand в URL-адресе, в результате чего MovieCategory и другие навигационные ссылки отображаются в виде URL-адресов к данным, а не включаются в данные.

Вместо этого используйте одинарные кавычки:

$url = 'http://api.internetvideoarchive.com/1.0/DataService/EntertainmentPrograms()?$expand=MovieCategory,Director,Copyrightholder&$select=MovieCategory/*,Director/*,Copyrightholder/*&developerid=bafd5091-a36d-4103-b435-638dc55d2122&format=atom'; 

$xml = simplexml_load_file($url); 

var_dump($xml);
...