我正在使用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) { }
}
在我看来非常奇怪,你有什么线索吗?
由于
答案 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 ONini_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;'改为'?')
这可能是也可能不是问题。