通过API调用获取XML

时间:2010-08-22 13:35:42

标签: php xml api

我正在尝试通过API发出呼叫,以便我可以删除用户属性。当我转到ourwiki.com/@api/users/=john_smith%40ourwiki.com/properties时,它返回包含所有用户属性的XML。

我正在尝试将该XML存储在变量$ xmlString中,然后我应该能够遍历以获取属性并依次删除。用户属性是键值,其中键和值可以是任何东西,所以不幸的是无法知道所有选项。

到目前为止的代码:

$delete = "http://www.ourwiki.com/@api/DELETE:users/$user_id/properties/%s";
$xmlString = file_get_contents('ourwiki.com/@api/users/=john_smith%40ourwiki.com/properties')
$xml = new SimpleXMLElement($xmlString);

foreach($xml->property as $property) {
  $name = $property['name']; // the name is stored in the attribute
  file_get_contents(sprintf($delete, $name));
}

由于某种原因,file_get_contents似乎无法获取XML。我甚至确保在环境中启用了allow_url_fopen。任何有关这方面的帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

尝试

$xmlString = file_get_contents("http://ourwiki.com/@api/users/=john_smith%40ourwiki.com/properties");

在第二行。通过在开头不包括协议,PHP正在服务器文件系统中查找文件。

编辑:

你说var_dump($xmlString)返回false。来自文档:

  

此函数类似于file(),但file_get_contents()以字符串形式返回文件,从指定的偏移量开始直到maxlen字节。 失败时,   file_get_contents()将返回FALSE。

这意味着PHP无法GET来自该网址的任何数据。

尝试使用

$xmlString = file_get_contents(urlencode('http://ourwiki.com/@api/users/=john_smith@ourwiki.com/properties'));