GET Запросы. Получение данных

237
27 сентября 2017, 11:46

Есть запрос api.bus62.ru/api7/?cm=gsf&cd=yakutsk&sr=mob&f=json&sid=129&type=0&lim=80&deep=4&devid=1439865001

{ 
"forecast": [ 
  { 
"type": "А", 
"num": "4", 
"arrTime": "94", 
"lastStation": "Столичный рынок", 
"whereGo": "Газпром" 
}, 
  { 
"type": "А", 
"num": "41", 
"arrTime": "128", 
"lastStation": "Якутская", 
"whereGo": "Магазин Успех" 
}, 
  { 
"type": "А", 
"num": "14", 
"arrTime": "138", 
"lastStation": "Якутская", 
"whereGo": "Тэкки Одулока" 
}, 
  { 
"type": "А", 
"num": "20", 
"arrTime": "156", 
"lastStation": "Якутская", 
"whereGo": "Мелиорация" 
}, 
  { 
"type": "А", 
"num": "25", 
"arrTime": "217", 
"lastStation": "Профлицей", 
"whereGo": "2-я дамба" 
}, 
  { 
"type": "А", 
"num": "4", 
"arrTime": "271", 
"lastStation": "Архив", 
"whereGo": "Газпром" 
}, 
  { 
"type": "А", 
"num": "4", 
"arrTime": "409", 
"lastStation": "Банковская", 
"whereGo": "Газпром" 
}, 
  { 
"type": "А", 
"num": "41", 
"arrTime": "461", 
"lastStation": "8 Марта", 
"whereGo": "Магазин Успех" 
}, 
  { 
"type": "А", 
"num": "4", 
"arrTime": "538", 
"lastStation": "ФСБ", 
"whereGo": "Газпром" 
}, 
  { 
"type": "А", 
"num": "109", 
"arrTime": "650", 
"lastStation": "ФСБ", 
"whereGo": "Захаровка" 
}, 
  { 
"type": "А", 
"num": "14", 
"arrTime": "668", 
"lastStation": "ФСБ", 
"whereGo": "Тэкки Одулока" 
}, 
  { 
"type": "А", 
"num": "25", 
"arrTime": "698", 
"lastStation": "Новинка", 
"whereGo": "2-я дамба" 
}, 
  { 
"type": "А", 
"num": "20", 
"arrTime": "754", 
"lastStation": "Кинотеатр Центральный", 
"whereGo": "Мелиорация" 
}, 
  { 
"type": "А", 
"num": "14", 
"arrTime": "868", 
"lastStation": "Кинотеатр Центральный", 
"whereGo": "Тэкки Одулока" 
}, 
  { 
"type": "А", 
"num": "41", 
"arrTime": "968", 
"lastStation": "Глазная больница", 
"whereGo": "Магазин Успех" 
}, 
  { 
"type": "А", 
"num": "20", 
"arrTime": "1000", 
"lastStation": "Пл. Ленина", 
"whereGo": "Мелиорация" 
}, 
  { 
"type": "А", 
"num": "4", 
"arrTime": "1002", 
"lastStation": "Пл. Ленина", 
"whereGo": "Газпром" 
}, 
  { 
"type": "А", 
"num": "25", 
"arrTime": "1212", 
"lastStation": "Областная больница", 
"whereGo": "2-я дамба" 
}, 
  { 
"type": "А", 
"num": "4", 
"arrTime": "1222", 
"lastStation": "Кинотеатр Лена", 
"whereGo": "Газпром" 
}, 
  { 
"type": "А", 
"num": "20", 
"arrTime": "1336", 
"lastStation": "Тургенева", 
"whereGo": "Мелиорация" 
}, 
  { 
"type": "А", 
"num": "14", 
"arrTime": "1356", 
"lastStation": "Школа №3", 
"whereGo": "Тэкки Одулока" 
}, 
  { 
"type": "А", 
"num": "41", 
"arrTime": "1420", 
"lastStation": "Стадион Туймаада", 
"whereGo": "Магазин Успех" 
}, 
  { 
"type": "А", 
"num": "4", 
"arrTime": "1483", 
"lastStation": "Байкалова", 
"whereGo": "Газпром" 
}, 
  { 
"type": "А", 
"num": "14", 
"arrTime": "1590", 
"lastStation": "Ипподром", 
"whereGo": "Тэкки Одулока" 
}, 
  { 
"type": "А", 
"num": "20", 
"arrTime": "1711", 
"lastStation": "Магазин В десятку", 
"whereGo": "Мелиорация" 
}, 
  { 
"type": "А", 
"num": "14", 
"arrTime": "1908", 
"lastStation": "ЯПАТП", 
"whereGo": "Тэкки Одулока" 
}, 
  { 
"type": "А", 
"num": "41", 
"arrTime": "1936", 
"lastStation": "Пл. Дружбы", 
"whereGo": "Магазин Успех" 
}, 
  { 
"type": "А", 
"num": "25", 
"arrTime": "1972", 
"lastStation": "Русский театр", 
"whereGo": "2-я дамба" 
}, 
  { 
"type": "А", 
"num": "41", 
"arrTime": "2171", 
"lastStation": "ЯГУ", 
"whereGo": "Магазин Успех" 
}, 
  { 
"type": "А", 
"num": "14", 
"arrTime": "2294", 
"lastStation": "Орхидея", 
"whereGo": "Тэкки Одулока" 
}, 
  { 
"type": "А", 
"num": "25", 
"arrTime": "2411", 
"lastStation": "Славяне", 
"whereGo": "2-я дамба" 
}, 
  { 
"type": "А", 
"num": "41", 
"arrTime": "2621", 
"lastStation": "Шевченко", 
"whereGo": "Магазин Успех" 
}, 
  { 
"type": "А", 
"num": "25", 
"arrTime": "3076", 
"lastStation": "Ильменская", 
"whereGo": "2-я дамба" 
}, 
  { 
"type": "А", 
"num": "41", 
"arrTime": "3097", 
"lastStation": "Ильменская", 
"whereGo": "Магазин Успех" 
}, 
  { 
"type": "А", 
"num": "41", 
"arrTime": "3574", 
"lastStation": "Горняк", 
"whereGo": "Магазин Успех" 
} 
], 
}

Как из этого вывести значения num,arrtime,lastStation,whereGo на страницу сайта например.

Answer 1
    function file_get_contents_curl($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Устанавливаем параметр, чтобы curl возвращал данные, вместо того, чтобы выводить их в браузер.
        curl_setopt($ch, CURLOPT_URL, $url);
        $data = curl_exec($ch);
        curl_close($ch);
        return json_decode($data);
    }
    $json = file_get_contents_curl('http://api.bus62.ru/api7/?cm=gsf&cd=yakutsk&sr=mob&f=json&sid=129&type=0&lim=80&deep=4&devid=1439865001');
    foreach($json->forecast as $v){
      echo $v->num.'<br>'.$v->arrTime.'<br>'.$v->lastStation.'<br>'.$v->whereGo .'<br>';
      echo '------------<br>';
    }

Как то так.

Answer 2

Создайте одну функцию, с которым в дальнейшем сможете отправлять все запросы

function sendRequest($url, $params = null, $method = 'GET'){
    if (!empty ($url))
    {
        $handler = curl_init ($url);
        $options = [
            CURLOPT_RETURNTRANSFER          => true,
            CURLOPT_FOLLOWLOCATION          => true,
            CURLOPT_CUSTOMREQUEST           => $method,
            CURLOPT_CONNECTTIMEOUT          => 0,
            CURLOPT_SSL_VERIFYHOST          => false,
            CURLOPT_SSL_VERIFYPEER          => false,
            CURLOPT_TIMEOUT                 => 0,
            CURLOPT_ENCODING                => true,
        ];
        if (in_array ($method, ['POST']))
        {
            if ($method == 'POST') $options[CURLOPT_POST] = true;
            $options[CURLOPT_POSTFIELDS] = http_build_query ($params);
        }
        curl_setopt_array($handler, $options);
        $result = curl_exec ($handler);
        curl_close ($handler);
        return json_decode($result);
    }
    return false;
}

а дальше сделайте просто запрос в нужном месте

GET

$obj = sendRequest('http://api.bus62.ru/api7/?cm=gsf&cd=yakutsk&sr=mob&f=json&sid=129&type=0&lim=80&deep=4&devid=1439865001');

POST

$obj = sendRequest('URL', ['key'=>'val','key1'=>'val1'], 'POST');
READ ALSO
Как быстро загрузить много данных в solr?

Как быстро загрузить много данных в solr?

Я загружаю данные через phpчерез SolrClient::addDocuments()

247
открыть предыдущую страницу php

открыть предыдущую страницу php

На сайте есть главная страница, куда попадают все авторизованные пользователи (mainphp)

209
Поймать get c помощью js

Поймать get c помощью js

Здравствуйте! Есть страница на которой необходимо поймать GET запрос и если передается id =, то показывать блок ,а если не то скрывать

232
Тестирование в phpUnit Mock-объектами

Тестирование в phpUnit Mock-объектами

Допустим, в тестируемом классе есть несколько публичных методов:

238