Google は、Ad Manager API とのやり取りに使用する Java クライアント ライブラリを提供しています。Apache Maven または Gradle でクライアント ライブラリを使用することをおすすめします。
まず、お好みの IDE で新しいプロジェクトを作成するか、既存のプロジェクトに依存関係を追加します。Google は、クライアント ライブラリ アーティファクトを com.google.api-ads/ad-manager として Maven 中央リポジトリに公開しています。
Maven
<!-- pom.xml -->
<dependency>
<groupId>com.google.api-ads</groupId>
<artifactId>ad-manager</artifactId>
<version>0.56.0</version>
</dependency>
Gradle
implementation 'com.google.api-ads:ad-manager:0.56.0'
認証情報の構成
Java クライアント ライブラリは、OAuth2 とアプリケーションのデフォルト認証情報(ADC)を使用して認証を行います。
ADC は、次の場所で認証情報を順に検索します。
GOOGLE_APPLICATION_CREDENTIALS環境変数。- Google Cloud CLI(gcloud CLI)を使用して設定されたユーザー認証情報。
- 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.level を CONFIG 以上に設定します。
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 ロギング アダプタを使用して JUL メッセージをログに記録できます。これは、SystemProperty を使用するか、Log4jBridgeHandler と JUL logging.properties ファイルを使用して構成できます。
システム プロパティ
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
Log4j Bridge ハンドラ
handlers = org.apache.logging.log4j.jul.Log4jBridgeHandler
org.apache.logging.log4j.jul.Log4jBridgeHandler.propagateLevels = true
これらの設定により、Ad Manager API ログがレベル CONFIG 以上の Logger に書き込まれます。次の log4j2.xml ファイルの例では、System.out に書き込む Logger を構成しています。
<?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 のサブクラスです。
ApiException.getReason() メソッドは、エラータイプを一意に識別する文字列を返します。これを使用して、エラーの処理方法を決定します。
404 Not Found と 401 Unauthorized を除くすべてのエラーには、追加情報を含む ErrorDetails が含まれています。400 Bad Request エラーの場合、ErrorDetails には FieldViolations のリストを含む BadRequest オブジェクトが含まれます。
try {
// ...
} catch (ApiException apiException) {
// HTTP status code enum
com.google.api.gax.rpc.StatusCode statusCode = apiException.getStatusCode();
// Unique identifier for the type of error
String errorCode = apiException.getReason();
// Human readable error message
String errorMessage = apiException.getMessage();
// Additional information is available in ErrorDetails.
ErrorDetails errorDetails = apiException.getErrorDetails();
if (errorDetails != null) {
// Additional information for 400 Bad Request errors
if (errorDetails.getBadRequest() != null) {
// List of field violations
List<BadRequest.FieldViolation> fieldViolations =
errorDetails.getBadRequest().getFieldViolationsList();
}
}
}
アド マネージャー 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.proxyHost と https.proxyHost の両方のシステム プロパティ設定を尊重します。これらの設定の詳細については、Java ネットワーキングとプロキシをご覧ください。