Для работы с API Яндекс.Метрика есть php библиотека, но мне не очень-то хочется подключать целую библиотеку, чтобы просто получить данные по одному единственному запросу к метрике.
Вводя в ручную в строке браузера запрос вида:
https://api-metrika.yandex.ru/analytics/v3/data/ga?end-date=today&ids=ga:ID_СЧЁТЧИКА&metrics=ga:users&start-date=29daysAgo&oauth_token=ТОКЕН_ДОСТУПА
Я получаю нужный мне JSON.
Если же пытаюсь сделать это через:
file_get_contents("ТОТ_ЖЕ_URL"); - выдаёт:
failed to open stream: ������ �� �������� ��� �������� ���� (when sending on a datagram socket using a sendto call) no address was supplied.
То есть "не удалось открыть поток.."
Пытаюсь через cUrl:
// Инициализируем сессию cUrl
$ch = curl_init();
// Устанавливаем настройки:
curl_setopt($ch, CURLOPT_URL, "https://api-metrika.yandex.ru/analytics/v3/data/ga?end-date=today&ids=ga:ID_СЧЁТЧИКА&metrics=ga:users&start-date=29daysAgo&oauth_token=ТОКЕН_ДОСТУПА");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: application/x-www-form-urlencoded;charset=utf-8"]); // Заголовки и кодировка
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0'); // Прикидываемся браузером
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // Максимальное время выполнения запроса на передачу данных, в секундах
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Возвращать ответ в окно браузера - ненужно
// Выполняем
$metrika_res = curl_exec($ch);
// Проверяем выполнился ли cUrl
if($metrika_res === false) {
die('Ошибка cURL PHP: ' . curl_error($ch));
} else {
debug($metrika_res);
}
// Закрываем сессию cUrl
curl_close($ch);
Выдаёт:
Ошибка cURL PHP: Failed to connect to api-metrika.yandex.ru port 443: Socket is not connected
Кто может подсказать, что не так делаю?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости