在Linux服务器上设置Odata?或者用php解析odata?

问题描述:

我一直在试图用simplexml和json_decode解析odata的xml和json数据,但它不工作。当我查询数据并将链接放入地址栏时,我收到了无用的数据,可以看到我想要的数据。当我将链接放在simplexml或json_decode方法中并执行var_dump()时,没有数据在那里。在Linux服务器上设置Odata?或者用php解析odata?

这只是一堆odata链接,以获取数据。例如,

我的原始链接,domain.com/1.0/DataService/Titles(4563)/?devid = {...}。

该数据将显示流派,标题和描述,但对于序我拿到流派或说明,我将需要使用这个网址是,

domain.com/1.0/DataService/Genre (4563)/?devid = {...}或domain.com/1.0/DataService/Description(4563)/?devid = {...}。


如果使用的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数据。

+0

请邮寄给别人一些代码,找出哪些是你使用的是什么版本的PHP回事 – 2012-03-20 03:36:30

+0

?可能你运行4 ...所以我想你需要rawurlencode来逃避&符号& – 2012-03-20 03:57:40

+0

@Mian_Khurram_Ijazless好吧我发布示例代码和示例查询,我将不得不在两天内删除我的开发人员帐户,因为我公开了我的开发人员ID。 – 2012-03-20 03:57:43

定义$ url时,示例代码中的问题是双引号。 PHP会尝试插入$ expand,$ select等作为变量。由于它们不作为代码中的变量存在,因此它们将被删除。

这样做的结果是,您丢失了url中的$ expand,这会使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);