繁体   English   中英

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

[英]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_contentscurl将失败对具有不受信任证书的页面的请求。 首先,您应该按照文档所示设置一个“让我们加密”证书。

然后,您的第一个代码将正确返回解码的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM