Возникли проблемы с извлечением ключа API из бунта - PullRequest
0 голосов
/ 16 мая 2018

Привет, у меня проблема с переносом моего Riot Api на laravel 5.6.Это личный проект, и я не знаю никого, кто бы понимал Laravel.Я зарегистрировался в Riot, чтобы получить ключ API.

Я получаю эту ошибку:

file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or 
service not known (View: 
/home/allyvoxc/ksgg.allyvox.co.za/resources/views/pages/LOL.blade.php)

Выделена строка

$summoner = json_decode($result)->$summonerName;

Это мой код,Я удалил свой код API в коде ниже.

@extends('header')

@section('content')
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Summoner Spy</title>
</head>
<body>
<h1>Summoner Spy</h1>
<?php
$apiKey = 'This is my API code';
$summonerName = 'lolnexus';

// get the basic summoner info
$result = 
file_get_contents('https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/' 
. $summonerName . '?api_key=' . $apiKey);
$summoner = json_decode($result)->$summonerName;
// var_dump($summoner);
?>
<h3>
<image height="64" width="64" src="http://avatar.leagueoflegends.com/na/<? 
php print $summonerName; ?>.png" valign="middle"/>
<?php print $summonerName ?>
</h3>
<div>
Level: <?php print $summoner->summonerLevel; ?>
</div>

<?php
// get that summoner's wins and losses for each game type
$result = 
file_get_contents('https://na.api.pvp.net/api/lol/na/v1.3/stats/by- 
summoner/' . $summoner->id . '/summary?api_key=' . $apiKey);
$stats = json_decode($result);
// var_dump($stats);
foreach($stats->playerStatSummaries as $statSummary){
// $statSummary->losses: sometimes losses isn't set
$losses = property_exists($statSummary, 'losses')? $statSummary->losses : 
'(not available)';
print '<p><b>' . $statSummary->playerStatSummaryType . '</b>: ' .
    $statSummary->wins . ' wins, ' . $losses . ' losses</p>';
}
?>
</body>
</html>

Спасибо всем, кто сможет помочь

С уважением

1 Ответ

0 голосов
/ 16 мая 2018

Я бы порекомендовал использовать пакет GuzzleHttp: http://docs.guzzlephp.org/en/stable/

Примером в вашем случае будет:

$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://na.api.pvp.net/api/lol/na/v1.3/stats/by-summoner/' . $summoner->id . '/summary', [
    'query' => [ 'api_key' => $apiKey ]
]);

if($res->getStatusCode() == 200) {
    $json = json_decode($res->getBody());
    $summoner = $json->$summonerName
}

Кроме того, я не уверен, что это будет ваш окончательный код. Но то, как вы изложили свой код, в некоторой степени противоречит цели MVC-фреймворка, такого как Laravel.

Вы должны собрать все свои данные в Controller, а затем, в свою очередь, передать эти данные в View

Я рекомендую этот курс для начала с Laravel: https://laracasts.com/series/laravel-from-scratch-2017

И особенно Эпизод 5 для вашего текущего случая: https://laracasts.com/series/laravel-from-scratch-2017/episodes/5

...