[英]How can I get PHP data from Azuracast API json output?
我非常努力地使Azuracast json查询输出,但是我不能,我是一个php家伙,我不太了解。 教程也不起作用。
我得到了代币和一切。 我只想将专辑名称,歌曲标题和艺术家输出到字符串。 而已。 我只想制作我的小自定义播放器,除此以外一切都进行得很好。 你们可以检查我的代码并帮助我吗? 我知道这个问题已经回答了,但是对我没有帮助。 它始终在我的网站上不输出任何内容。
我的api链接: 这里
//$url = "https://91.247.70.40/api/nowplaying/2.json";
//$data = file_get_contents($url);
//$infos = json_decode($data, true);
//$nazwa = $infos->cache;
//echo $nazwa;
function jwt_request($token, $post) {
$ch = curl_init('https://91.247.70.40/api/nowplaying/2');
header('Content-Type: application/json');
$post = json_encode($post);
$authorization = "Authorization: Bearer ".$token;
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
curl_close($ch);
return json_decode($result, true);
}
echo $result->cache;
您可以看到我尝试了两种方法。 没有工作。 我已经隐藏了令牌。 它设置正确,我知道。
您似乎在这里遇到多个问题。 第一个是您的API在HTTPS上提供,但证书/自签名证书无效。 默认情况下, file_get_contents
和curl
将失败对具有不受信任证书的页面的请求。 首先,您应该按照文档所示设置一个“让我们加密”证书。
然后,您的第一个代码将正确返回解码的JSON数据。 但是,您应该删除URL末尾的.json
,因为这不是您要请求的文件,而是API路由。 在那里,您尝试访问已解码的数据,就好像它是一个对象一样,但是json_decode($data, true)
返回一个assoc数组,因此您需要像$infos['cache']
这样访问数据。 如果要从数据中获取专辑名称,歌曲名称和艺术家,则需要访问以下字段: $infos['now_playing']['song']['album']
, $infos['now_playing']['song']['title']
和$infos['now_playing']['song']['artist']
。
解决了证书错误后,第二个代码示例将不起作用,因为/api/nowplaying/{station_id}
路由是GET路由,但是您将CURL请求定义为POST请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.