Получение кампаний
PHP версии 5, формат JSON, используется функция file_get_contents
Пример демонстрирует выполнение запроса методом Campaigns.get, обработку и вывод результата. Для использования примера во входных данных укажите OAuth-токен. При запросе от имени агентства необходимо также указать логин клиента.
<?php
//--- Входные данные ----------------------------------------------------//
// Адрес сервиса Campaigns для отправки JSON-запросов (регистрозависимый)
$url = 'https://api.direct.yandex.com/json/v5/campaigns';
// OAuth-токен пользователя, от имени которого будут выполняться запросы
$token = 'ТОКЕН';
// Логин клиента рекламного агентства
// Обязательный параметр, если запросы выполняются от имени рекламного агентства
$clientLogin = 'ЛОГИН_КЛИЕНТА';
//--- Подготовка и выполнение запроса -----------------------------------//
// Установка HTTP-заголовков запроса
$headers = array(
"Authorization: Bearer $token", // OAuth-токен. Использование слова Bearer обязательно
"Client-Login: $clientLogin", // Логин клиента рекламного агентства
"Accept-Language: ru", // Язык ответных сообщений
"Content-Type: application/json; charset=utf-8" // Тип данных и кодировка запроса
);
// Параметры запроса к серверу API Директа
$params = array(
'method' => 'get', // Используемый метод сервиса Campaigns
'params' => array(
'SelectionCriteria' => (object) array(), // Критерий отбора кампаний. Для получения всех кампаний должен быть пустым
'FieldNames' => array('Id', 'Name') // Названия параметров, которые требуется получить
)
);
// Преобразование входных параметров запроса в формат JSON
$body = json_encode($params, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
// Создание контекста потока: установка HTTP-заголовков и тела запроса
$streamOptions = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => $headers,
'content' => $body
),
/*
// Для полноценного использования протокола HTTPS можно включить проверку SSL-сертификата сервера API Директа
'ssl' => array(
'verify_peer' => true,
'cafile' => getcwd().DIRECTORY_SEPARATOR.'CA.pem' // Путь к локальной копии корневого SSL-сертификата
)
*/
));
// Выполнение запроса, получение результата
$result = file_get_contents($url, 0, $streamOptions);
//--- Обработка результата выполнения запроса ---------------------------//
if ($result === false) { echo "Ошибка выполнения запроса!"; }
else {
// Преобразование ответа из формата JSON
$result = json_decode($result);
if (isset($result->error)) {
$apiErr = $result->error;
echo "Ошибка API {$apiErr->error_code}: {$apiErr->error_string} - {$apiErr->error_detail} (RequestId: {$apiErr->request_id})";
}
else {
// Извлечение HTTP-заголовков ответа: RequestId (Id запроса) и Units (информация о баллах)
foreach ($http_response_header as $header) {
if (preg_match('/(RequestId|Units):/', $header)) { echo "$header <br>"; }
}
// Вывод списка рекламных кампаний
foreach ($result->result->Campaigns as $campaign) {
echo "Рекламная кампания: {$campaign->Name} ({$campaign->Id})<br>";
}
}
}
//--- Отладочная информация ---------------------------------------------//
//echo "<hr>Заголовки запроса: <pre>".implode($headers, '<br>')."</pre>";
//echo "Запрос: <pre>".json_encode($params, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)."</pre>";
//echo "Заголовки ответа: <pre>".implode($http_response_header, '<br>')."</pre>";
//echo "Ответ: <pre>".json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)."</pre>";
?>