如何从Azuracast API json输出获取PHP数据?

时间:2019-02-03 16:27:47

标签: php arrays json

我非常努力地使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;

您可以看到我尝试了两种方法。没有工作。我已经隐藏了令牌。我知道,它设置正确。

1 个答案:

答案 0 :(得分:0)

您似乎在这里遇到多个问题。第一个是您的API在HTTPS上提供,但证书/自签名证书无效。默认情况下,file_get_contentscurl将失败对具有不可信证书的页面的请求。首先,您应该按照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请求,因此,在修复证书错误后,您的第二个代码示例将不起作用。