Как получить данные PHP из вывода json API Azuracast? - PullRequest
0 голосов
/ 03 февраля 2019

Я очень старался сделать вывод запроса ju Azuracast, но я не могу, я парень 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;

вы можете видеть, что я пробовал два способа.Никто не работал.Я спрятал токен.Он настроен правильно, я это знаю.

1 Ответ

0 голосов
/ 06 февраля 2019

Кажется, у вас здесь несколько проблем.Во-первых, ваш API обслуживается по протоколу HTTPS, но с недействительным сертификатом / сертификатом с собственной подписью.file_get_contents и curl по умолчанию будут отклонять запросы к страницам с ненадежным сертификатом.Сначала вы должны установить сертификат Let's Encrypt, как показано в документации .

. Затем ваш первый код будет правильно возвращать декодированные данные JSON.Но вы должны удалить .json в конце URL, поскольку это не файл, который вы запрашиваете, а маршрут API.Там вы пытаетесь получить доступ к декодированным данным, как если бы это был объект, но json_decode($data, true) возвращает ассоциированный массив, поэтому вам нужно получить доступ к данным, подобным этому $infos['cache'].Если вы хотите получить название альбома, название песни и исполнителя из данных, которые вам нужны для доступа к этим полям: $infos['now_playing']['song']['album'], $infos['now_playing']['song']['title'] и $infos['now_playing']['song']['artist'].

Ваш второй пример кода не будет работать после того, как выисправлена ​​ошибка сертификата, поскольку маршрут /api/nowplaying/{station_id} является маршрутом GET, но вы определяете запрос CURL как запрос POST.

...