simplexml_load_file适用于本地计算机,无法在线运行

时间:2013-04-03 11:41:47

标签: php xml dreamhost deezer

我正在使用Deezer API

$xml = simplexml_load_file('http://api.deezer.com/2.0//search/artist/?q=eminem&index=0&nb_items=1&output=xml');

var_dump($xml);

$xml = simplexml_load_file('http://api.deezer.com/2.0/artist/393/top/&output=xml');

var_dump($xml);

第一次通话在我的本地计算机(Mac PHP 5.3.15)和梦想主机服务器(PHP 5.3.13)上的相同方式工作,第二次通话在我的本地计算机上运行,​​报告所有5跟踪对象,但不是在线,我得到的地方

object(SimpleXMLElement)#4 (2) { 
 ["data"]=> object(SimpleXMLElement)#1 (0) { } 
 ["total"]=> object(SimpleXMLElement)#3 (0) { } 
}

在我看来非常奇怪,你有什么线索吗?

由于

3 个答案:

答案 0 :(得分:2)

Deezer使用艺术家请求的地理位置。

因此,如果您的服务器在美国进行了地理定位,那么第一个请求在本地和在线之间具有相同的结果,但第二个请求(http://api.deezer.com/2.0/artist/393/top/&output=xml)在本地/在线上没有相同的结果。

请求FR Ip:

<?xml version="1.0" encoding="utf-8"?><root><data><track><id><![CDATA[2114267]]></id><readable><![CDATA[1]]></readable><title><![CDATA[My Life]]></title><link><![CDATA[http://www.deezer.com/track/2114267]]></link><duration><![CDATA[321]]></duration><rank><![CDATA[674751]]></rank><preview><![CDATA[http://cdn-preview-2.deezer.com/stream/2ecb4b24f51cdbfdaea89630f1978529-0.mp3]]></preview><artist><id><![CDATA[393]]></id><name><![CDATA[The Game]]></name></artist><type><![CDATA[track]]></type></track><track><id><![CDATA[2307182]]></id><readable><![CDATA[1]]></readable><title><![CDATA[Hate It Or Love It]]></title><link><![CDATA[http://www.deezer.com/track/2307182]]></link><duration><![CDATA[207]]></duration><rank><![CDATA[654207]]></rank><preview><![CDATA[http://cdn-preview-3.deezer.com/stream/393350005d03712abc9adfbe2bcfe2d3-0.mp3]]></preview><artist><id><![CDATA[393]]></id><name><![CDATA[The Game]]></name></artist><type><![CDATA[track]]></type></track><track><id><![CDATA[2294433]]></id><readable><![CDATA[1]]></readable><title><![CDATA[How We Do]]></title><link><![CDATA[http://www.deezer.com/track/2294433]]></link><duration><![CDATA[235]]></duration><rank><![CDATA[610398]]></rank><preview><![CDATA[http://cdn-preview-c.deezer.com/stream/c3683a1fc1899c9d1b128b222d0e080f-1.mp3]]></preview><artist><id><![CDATA[393]]></id><name><![CDATA[The Game]]></name></artist><type><![CDATA[track]]></type></track><track><id><![CDATA[62751648]]></id><readable><![CDATA[1]]></readable><title><![CDATA[Ali Bomaye]]></title><link><![CDATA[http://www.deezer.com/track/62751648]]></link><duration><![CDATA[373]]></duration><rank><![CDATA[571988]]></rank><preview><![CDATA[http://cdn-preview-1.deezer.com/stream/1bb2606c722235eeecb2b1caa039f5c1-0.mp3]]></preview><artist><id><![CDATA[393]]></id><name><![CDATA[The Game]]></name></artist><type><![CDATA[track]]></type></track><track><id><![CDATA[61571949]]></id><readable><![CDATA[1]]></readable><title><![CDATA[Celebration]]></title><link><![CDATA[http://www.deezer.com/track/61571949]]></link><duration><![CDATA[290]]></duration><rank><![CDATA[559639]]></rank><preview><![CDATA[http://cdn-preview-f.deezer.com/stream/f1f535359bd60ce3ec77d59fcfda4ebd-1.mp3]]></preview><artist><id><![CDATA[393]]></id><name><![CDATA[The Game]]></name></artist><type><![CDATA[track]]></type></track></data><total><![CDATA[5]]></total></root>

与美国地址相同的请求:

<?xml version="1.0" encoding="utf-8"?><root><data></data><total><![CDATA[0]]></total></root>

完成答案。您可以使用位于非限制国家/地区的用户access_token更改您的请求的地理位置(并且来自美国服务器),因为当您使用access_token请求deezer api时,api将使用用户所在国家而不是服务器国家/地区。

要从用户获取访问令牌: http://developers.deezer.com/api/oauth

当您想要使用用户地理位置添加此项时,请不要忘记每个请求:

?access_token=XXXXX

编辑: 我是加油队的一员。

答案 1 :(得分:1)

如果你想通过http协议访问xml,你需要在php.ini或

中设置allow_url_fopen ON
ini_set('allow_url_fopen ','ON');
你的代码中的

。或者如果你使用的是php版本&lt; 5

,你也可以这样做
$temp = file_get_contents($url);
 $XmlObj = simplexml_load_string($temp); 

答案 2 :(得分:0)

尝试:

$xml = simplexml_load_file('http://api.deezer.com/2.0/artist/393/top/?output=xml');

(即将'&amp;'改为'?')

这可能是也可能不是问题。