1

我正在尝试定期从 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 来指定艺术家和专辑,因此 URL 看起来像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 时,它可以工作吗?有人可以帮忙吗?我究竟做错了什么?

4

2 回答 2

0

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

于 2013-07-06T03:27:22.300 回答
0

你需要 urlencode() GETs,像这样:

<?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

希望这可以帮助!

于 2013-07-06T03:46:07.087 回答