我非常努力地使Azuracast json查询输出,但是我不能,我是一个php家伙,我不太了解。教程也不起作用。
我得到了我的记号和全部。我只想将专辑名称,歌曲标题和艺术家输出到字符串。而已。我只想制作我的小自定义播放器,除此以外一切都进行得很好。你们可以检查我的代码并帮助我吗?我知道这个问题已经回答了,但是对我没有帮助。它始终在我的网站上不输出任何内容。
我的api链接:here
//$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;
您可以看到我尝试了两种方法。没有工作。我已经隐藏了令牌。我知道,它设置正确。
答案 0 :(得分:0)
您似乎在这里遇到多个问题。第一个是您的API在HTTPS上提供,但证书/自签名证书无效。默认情况下,file_get_contents
和curl
将失败对具有不可信证书的页面的请求。首先,您应该按照documentation所示设置“让我们加密”证书。
然后您的第一个代码将正确返回解码的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请求,因此,在修复证书错误后,您的第二个代码示例将不起作用。