我是使用itoviedb JSON api的新手,我现在正在尝试做一些看似简单的事情:显示电影的主要海报。我有一个API密钥,这是我正在使用的代码/响应。
$ca = curl_init();
curl_setopt($ca, CURLOPT_URL, "http://api.themoviedb.org/3/configuration?api_key=MYAPIKEY");
curl_setopt($ca, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ca, CURLOPT_HEADER, FALSE);
curl_setopt($ca, CURLOPT_HTTPHEADER, array("Accept: application/json"));
$response = curl_exec($ca);
curl_close($ca);
//var_dump($response);
$config = json_decode($response, true);
//print_r($config);
//$base = $config['base_url'];
//echo($base);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://api.themoviedb.org/3/search/movie?query=Monsters+University&api_key=MYAPIKEY");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/json"));
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
//print_r($result);
//var_dump($response);
echo("<img src='" . $config[0]['base_url'] . $config[0]['poster_sizes'][2] . $result[0]['poster_path'] . "'/>");
我现在唯一的问题是我正在尝试回显一个标签来显示海报,但我不确定正确的代码会是什么样的呢?
$responsePHP = json_decode($response);
echo("<img src='" . $responsePHP['poster_path'] . "'/>");
任何帮助将不胜感激!
编辑:添加了配置数组,但回送时没有任何内容。打印好的JSON和print_r
似乎与json_decode
一起使用,我只是不知道为什么我不能从数组中提取任何值
答案 0 :(得分:6)
您似乎需要向/3/configuration
发出额外请求以获取更多信息。
您要查找的参数是base_url
,您可以使用它来构建网址。
在此处阅读更多内容:http://docs.themoviedb.apiary.io/#get-%2F3%2Fconfiguration
您可能想知道为什么需要这样做。根据他们的网站,他们这样做,以便他们可以保持自己的API,base_url
似乎很少改变(更多请参阅https://www.themoviedb.org/talk/515a72d0760ee3615a0b5256)
所以,你可以每X次只做一次这个请求(例如每天一次),然后使用base_url
我可能需要做的所有后续请求。
编辑:叹了口气,我以为你只是因为没有base_url
而有问题,而不是从json获取数据。
echo("<img src='" . $config['images']['base_url'] . $config['images']['poster_sizes'][2] . $result['results'][0]['poster_path'] . "'/>");
就是这样。
答案 1 :(得分:0)
echo("<img src='" . $config['base_url'] . $config['poster_sizes'][2] . $responsePHP['poster_path'] . "'/>");
所以输出应该是这样的: http://d3gtl9l2a4fn1j.cloudfront.net/t/p/w185/2lECpi35Hnbpa4y46JX0aY3AWTy.jpg
答案 2 :(得分:0)
以下将打印出海报路径。我想这就是你想要的。
$responsePHP = json_decode($response);
$movies = $responsePHP->results;
$firstMovie = $movies[0];
echo $firstMovie->poster_path;
如果您的问题是关于如何获得base_url,请查看vadderung的答案。