无法使Last.FM API PHP代理工作

时间:2013-07-06 03:20:28

标签: php javascript proxy jsonp last.fm

我正在尝试定期从Last.FM API检索JSON相册数据,因为它们不支持JSONP我使用PHP代理来规避跨域限制。这是我的PHP代理:

<?php
$artist = $_GET["artist"];
$album = $_GET["album"];
$content = file_get_contents('http://ws.audioscrobbler.com/2.0/?method=album.getinfo&api_key=APIKEY=' . $artist . '&album=' . $album . '&format=json');
echo $content;
?>

如您所见,我正在使用GET指定艺术家和相册,因此网址看起来像albumartproxy.php?artist=Jake%20Bugg&album=Jake%20Bugg

但由于某种原因,当我尝试运行代理时出现以下错误:

Warning: file_get_contents(http://ws.audioscrobbler.com/2.0/?method=album.getinfo&api_key=037358e302c80571663e6a7a66b1dc05&artist=Jake Bugg&album=Jake Bugg&format=json) [function.file-get-contents]: failed to open stream: HTTP request failed! in /MYDOMAIN/albumartproxy.php on line 6

当我直接访问API URL时,它有效吗?有人可以帮忙吗?我做错了什么?

2 个答案:

答案 0 :(得分:0)

您需要urlencode()与请求一起传递的GET参数。

答案 1 :(得分:0)

你需要urlencode()GET s,如下所示:

<?php

$apikey = "273f3dc84c2d55501f3dc25a3d61eb39";

$artist = urlencode($_GET["artist"]);
$album = urlencode($_GET["album"]);
$autocorrect = 0;

$content = "http://ws.audioscrobbler.com/2.0/?method=album.getinfo&api_key=".$apikey."&artist=".$artist."&album=".$album."&autocorrect=".$autocorrect;

echo file_get_contents($content);

?>

示例输出: http://pastie.org/8114551

希望这有帮助!