Java

Google предоставляет клиентскую библиотеку Java для взаимодействия с API Менеджера рекламы. Мы рекомендуем использовать клиентскую библиотеку с 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 ищет учетные данные по порядку в следующих местах:

  1. Переменная среды GOOGLE_APPLICATION_CREDENTIALS .
  2. Учетные данные пользователя, настроенные через Google Cloud CLI (gcloud CLI).
  3. При работе в 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);
}

Лог4дж

Если вы используете Log4j для ведения журнала, вы можете использовать адаптер ведения журнала Log4j JDK для регистрации сообщений 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 Менеджера рекламы в любой регистратор с уровнем CONFIG или выше. В следующем примере файла log4j2.xml настраивается Logger, который записывает данные в 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 Менеджера рекламы являются подклассами 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 Менеджера рекламы также включают уникальный 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 и прокси» .