【问题标题】:Setting up Odata on a linux server? Or parsing odata with php?在 Linux 服务器上设置 Odata?还是用php解析odata?
【发布时间】:2012-04-01 05:09:07
【问题描述】:

我一直在尝试用 simplexml 和 json_decode 解析 odata 的 xml 和 json 数据,但它不起作用。我得到了无用的数据,当我查询数据并将链接放在地址栏中时,我可以在其中看到我想要的数据。当我将链接放在 simplexml 或 json_decode 方法中并执行 var_dump() 时,其中没有任何数据。

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

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

此数据将显示流派、标题和描述,但为了让我获得流派或描述,我需要使用这个 url,即,

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);

你可以将 atom 改为 json 来获取 json 数据。

【问题讨论】:

  • 请发布一些代码供其他人了解发生了什么
  • 你使用的是什么 php 版本?可能你正在运行 4 ......所以我想你需要 rawurlencode 来逃避 &
  • @Mian_Khurram_Ijazless 好吧,我发布示例代码和示例查询,但我必须在两天内删除我的开发者帐户,因为我暴露了我的开发者 ID。
  • @Mian_Khurram_Ijazless 版本 5.2.4

标签: php simplexml odata json


【解决方案1】:

您的示例代码中的问题是定义 $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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 2020-03-01
    相关资源
    最近更新 更多