Google предоставляет клиентскую библиотеку на Java для взаимодействия с API Ad Manager. Мы рекомендуем использовать эту библиотеку с Apache Maven или Gradle.
Для начала создайте новый проект в выбранной вами IDE или добавьте зависимость к существующему проекту. Google публикует артефакты клиентской библиотеки в центральный репозиторий Maven по адресу com.google.api-ads/ad-manager .
Мэйвен
<!-- pom.xml -->
<dependency>
<groupId>com.google.api-ads</groupId>
<artifactId>ad-manager</artifactId>
<version>0.1.0</version>
</dependency>
Грэдл
implementation 'com.google.api-ads:ad-manager:0.1.0'
Настройте учетные данные
Клиентская библиотека Java использует OAuth2 и учетные данные приложения по умолчанию (ADC) для аутентификации.
ADC выполняет поиск учетных данных в следующем порядке:
- Переменная среды
GOOGLE_APPLICATION_CREDENTIALS. - Учетные данные пользователя настраиваются через интерфейс командной строки Google Cloud (gcloud CLI).
- При работе в Google Cloud учетная запись службы, привязанная к ресурсу Google Cloud.
Для создания и настройки учетных данных ADC см. раздел «Аутентификация» .
Сделайте свой первый запрос
Каждый сервис имеет объект ServiceClient с синхронными и асинхронными методами для каждого REST-метода. В следующем примере показано синхронное чтение Network .
import com.google.ads.admanager.v1.GetNetworkRequest;
import com.google.ads.admanager.v1.Network;
import com.google.ads.admanager.v1.NetworkName;
import com.google.ads.admanager.v1.NetworkServiceClient;
public class SyncGetNetwork {
public static void main(String[] args) throws Exception {
syncGetNetwork();
}
public static void syncGetNetwork() throws Exception {
try (NetworkServiceClient networkServiceClient = NetworkServiceClient.create()) {
GetNetworkRequest request =
GetNetworkRequest.newBuilder()
.setName(NetworkName.of("[NETWORK_CODE]").toString())
.build();
Network response = networkServiceClient.getNetwork(request);
}
}
}
Примеры других методов и ресурсов можно найти в репозитории GitHub googleapis/google-cloud-java .
Регистрируйте HTTP-запросы и ответы.
Класс com.google.api.client.http.HttpTransport выполняет все HTTP-запросы. Этот класс использует java.util.logging (JUL) для регистрации деталей HTTP-запросов и ответов, включая URL, заголовки и содержимое.
Чтобы включить логирование, установите для этого класса уровень логирования CONFIG или выше. Шаги для этого различаются в зависимости от используемой реализации логирования.
ИЮЛЬ
Чтобы включить логирование, установите значение параметра com.google.api.client.http.level равным CONFIG или выше в файле logging.properties .
handlers=java.util.logging.ConsoleHandler
com.google.api.client.http.level=CONFIG
java.util.logging.ConsoleHandler.level=CONFIG
В качестве альтернативы вы можете включить логирование в своем Java-коде.
import com.google.api.client.http.HttpTransport;
import java.util.logging.ConsoleHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
public static void enableLogging() {
Logger logger = Logger.getLogger(HttpTransport.class.getName());
logger.setLevel(Level.CONFIG);
ConsoleHandler handler = new ConsoleHandler();
handler.setLevel(Level.CONFIG);
logger.addHandler(handler);
}
Log4j
Если вы используете Log4j для ведения журналов, вы можете использовать адаптер Log4j JDK Logging Adapter для записи сообщений JUL. Это можно настроить через SystemProperty или с помощью Log4jBridgeHandler и файла JUL logging.properties .
Системное свойство
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
Обработчик моста Log4j
handlers = org.apache.logging.log4j.jul.Log4jBridgeHandler
org.apache.logging.log4j.jul.Log4jBridgeHandler.propagateLevels = true
Эти настройки записывают логи API Ad Manager в любой логгер с уровнем CONFIG или выше. В следующем примере файла log4j2.xml настраивается логгер, который записывает данные в System.out .
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="com.google.api.client.http.HttpTransport" level="debug">
<AppenderRef ref="Console"/>
</Logger>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
Обработка ошибок
Все ошибки API Ad Manager являются подклассами ApiException в клиентской библиотеке Java.
Все ошибки, кроме 404 Not Found и 401 Unauthorized содержат ErrorDetails с дополнительной информацией.
Ошибки синтаксического анализа
Поле «Причина ошибки» однозначно определяет тип ошибки. Используйте это поле, чтобы определить способ обработки ошибки.
ErrorDetails errorDetails = apiException.getErrorDetails();
if (errorDetails != null) {
// Unique error code in UPPER_SNAKE_CASE.
String errorCode = errorDetails.getReason();
}
В сообщениях об ошибках API Ad Manager также указывается уникальный request_id который вы можете предоставить в службу поддержки для получения помощи в устранении неполадок. В следующем примере извлекается request_id .
ErrorDetails errorDetails = apiException.getErrorDetails();
if (errorDetails != null && errorDetails.getRequestInfo() != null) {
// Unique request identifier.
String requestId = errorDetails.getRequestInfo().getRequestId();
}
Формирование имен ресурсов
Клиентская библиотека предоставляет вспомогательные классы для формирования имен ресурсов на основе идентификаторов.
import com.google.ads.admanager.v1.OrderName;
// ...
// Constructs a String in the format:
// "networks/{networkCode}/orders/{orderId}"
OrderName.of("123", "789");
Настройка параметров прокси-сервера
Клиентская библиотека Java учитывает системные параметры http.proxyHost и https.proxyHost . Более подробную информацию об этих параметрах см. в разделе «Сеть Java и прокси» .