Java

Google에서는 Ad Manager API와 상호작용하기 위한 Java 클라이언트 라이브러리를 제공합니다. Apache Maven 또는 Gradle과 함께 클라이언트 라이브러리를 사용하는 것이 좋습니다.

시작하려면 원하는 IDE에서 새 프로젝트를 만들거나 기존 프로젝트에 종속 항목을 추가합니다. Google은 클라이언트 라이브러리 아티팩트를 Maven 중앙 저장소에 com.google.api-ads/ad-manager로 게시합니다.

Maven

<!-- pom.xml -->
<dependency>
  <groupId>com.google.api-ads</groupId>
  <artifactId>ad-manager</artifactId>
  <version>0.1.0</version>
</dependency>

Gradle

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 사용자 인증 정보를 만들고 구성하는 방법은 인증을 참고하세요.

첫 번째 요청하기

각 서비스에는 각 REST 메서드의 동기 및 비동기 메서드가 모두 있는 ServiceClient 객체가 있습니다. 다음 예에서는 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 요청을 수행합니다. 이 클래스는 URL, 헤더, 콘텐츠를 비롯한 HTTP 요청 및 응답 세부정보를 로깅하는 데 java.util.logging(JUL)을 사용합니다.

로깅을 사용 설정하려면 이 클래스의 로거를 CONFIG 이상의 로그 수준으로 설정하세요. 이 단계는 사용하는 로깅 구현에 따라 다릅니다.

7월

로깅을 사용 설정하려면 logging.properties 파일에서 com.google.api.client.http.levelCONFIG 이상으로 설정합니다.

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 어댑터를 사용하여 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

이 설정은 수준이 CONFIG 이상인 로거에 Ad Manager API 로그를 작성합니다. 다음 예시 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>

오류 처리

모든 Ad Manager API 오류는 Java 클라이언트 라이브러리의 ApiException의 하위 클래스입니다.

404 Not Found401 Unauthorized를 제외한 모든 오류에는 추가 정보가 포함된 ErrorDetails가 포함됩니다.

파싱 오류

오류 이유 필드는 오류 유형을 고유하게 식별합니다. 이 필드를 사용하여 오류를 처리하는 방법을 결정합니다.

ErrorDetails errorDetails = apiException.getErrorDetails();
if (errorDetails != null) {
  // Unique error code in UPPER_SNAKE_CASE.
  String errorCode = errorDetails.getReason();
}

Ad Manager API 오류에는 문제 해결 지원을 위해 지원에 제공할 수 있는 고유한 request_id도 포함됩니다. 다음 예에서는 request_id를 추출합니다.

ErrorDetails errorDetails = apiException.getErrorDetails();
if (errorDetails != null && errorDetails.getRequestInfo() != null) {
  // Unique request identifier.
  String requestId = errorDetails.getRequestInfo().getRequestId();
}

리소스 이름 구성

클라이언트 라이브러리는 ID에서 리소스 이름을 빌드하기 위한 도우미 클래스를 제공합니다.

import com.google.ads.admanager.v1.OrderName;

// ...

//  Constructs a String in the format:
//  "networks/{networkCode}/orders/{orderId}"
OrderName.of("123", "789");

프록시 설정 구성

Java 클라이언트 라이브러리는 http.proxyHosthttps.proxyHost 시스템 속성 설정을 모두 준수합니다. 이러한 설정에 관한 자세한 내용은 Java 네트워킹 및 프록시를 참고하세요.