全部, 我正试图让用户搜索一首歌。假设用户正在搜索杰克约翰逊,我想在杰克约翰逊的iTunes上显示所有歌曲。我知道我需要构建如下的URL:
从编程方面来看,我该如何将其发送给Apple?如果我将该URL复制到浏览器中,我会得到一些结果。根据这些结果,我如何解析这些结果,以便我可以将它们显示给用户?我想使用JSON,cURL,两者的组合吗?最有效的方法是什么?
非常感谢任何帮助!
答案 0 :(得分:4)
如果我理解你想要的东西,可能是这样的:
<?php
if(isset($_POST['term']))
{
$term = urlencode($_POST['term']); // user input 'term' in a form
$json = file_get_contents('http://itunes.apple.com/search?term='.$term.'&limit=25&media=music&entity=musicArtist,musicTrack,album,mix,song');
$array = json_decode($json, true);
foreach($array['results'] as $value)
{
echo '<p>';
echo $value['artistName'].'<br />';
echo $value['artistLinkUrl'].'<br />';
echo $value['primaryGenreName'];
echo '</p>';
}
}
?>
<form method="post">
<input type="text" name="term" /><input type="submit" value="Go" />
</form>
要获得更多$数组值,请尝试print_r($array);
答案 1 :(得分:1)
您可以使用file_get_contents
并使用json_decode
解析结果。
$js= json_decode(file_get_contents('http://itunes.apple.com/search?term=jack+johnson&limit=25&media=music&entity=musicArtist,musicTrack,album,mix,song'));
$js
现在是一个包含apple返回的所有信息的数组。
答案 2 :(得分:1)
请求必须通过HTTP执行。 JSON只是它返回的数据的格式,而不是检索它的方法。
您可以通过多种方式获取该数据。
最简单的选择就是使用file_get_contents
,如果您的服务器启用了fopen包装器(很可能)。
$data = file_get_contents('http://itunes.apple.com/search?term=jack+johnson&limit=25&media=music&entity=musicArtist,musicTrack,album,mix,song');
cURL也可以使用类似的选项:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://itunes.apple.com/search?term=jack+johnson&limit=25&media=music&entity=musicArtist,musicTrack,album,mix,song");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
一旦您检索到该页面的内容,只要安装了JSON扩展,就可以轻松地对其进行反序列化。如果你正在使用PHP 5.2.0+,那么它就是核心的一部分。否则,您需要安装PECL模块。 See the PHP manual page on the extension for more information.
$response = json_decode($data);
var_dump($response);
反序列化数据是一个对象。您可以像这样使用它:
foreach ($response->results as $result)
{
echo "Artist: ".$result->artistName."<br />".PHP_EOL;
}