Java

Google stellt eine Java-Clientbibliothek für die Interaktion mit der Ad Manager API bereit. Wir empfehlen, die Clientbibliothek mit Apache Maven oder Gradle zu verwenden.

Erstellen Sie zuerst ein neues Projekt in der IDE Ihrer Wahl oder fügen Sie die Abhängigkeit einem vorhandenen Projekt hinzu. Google veröffentlicht Clientbibliotheksartefakte im zentralen Maven-Repository als com.google.api-ads/ad-manager.

Maven

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

Gradle

implementation 'com.google.api-ads:ad-manager:0.60.0'

Anmeldedaten konfigurieren

Die Java-Clientbibliothek verwendet OAuth2 und Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) zur Authentifizierung.

ADC sucht an folgenden Standorten nach Anmeldedaten:

  1. Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS.
  2. Nutzeranmeldedaten, die über die Google Cloud CLI (gcloud CLI) eingerichtet wurden.
  3. Bei der Ausführung in Google Cloud das Dienstkonto, das an die Google Cloud-Ressource angehängt ist.

Informationen zum Erstellen und Konfigurieren Ihrer ADC-Anmeldedaten finden Sie unter Authentifizierung.

Erste Anfrage senden

Jeder Dienst hat ein ServiceClient-Objekt mit synchronen und asynchronen Methoden für jede REST-Methode. Im folgenden Beispiel wird ein Network synchron gelesen.

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);
    }
  }
}

Beispiele für andere Methoden und Ressourcen finden Sie im GitHub-Repository googleapis/google-cloud-java.

HTTP-Anfragen und -Antworten protokollieren

Die Klasse com.google.api.client.http.HttpTransport führt alle HTTP-Anfragen aus. Diese Klasse verwendet java.util.logging (JUL) zum Protokollieren von HTTP-Anfrage- und Antwortdetails, einschließlich URL, Headern und Inhalt.

Wenn Sie das Logging aktivieren möchten, legen Sie für den Logger dieser Klasse die Logebene CONFIG oder höher fest. Die Schritte hierfür hängen davon ab, welche Logging-Implementierung Sie verwenden.

JUL

Wenn Sie das Logging aktivieren möchten, setzen Sie com.google.api.client.http.level in der Datei logging.properties auf CONFIG oder höher.

handlers=java.util.logging.ConsoleHandler
com.google.api.client.http.level=CONFIG
java.util.logging.ConsoleHandler.level=CONFIG

Alternativ können Sie das Logging in Ihrem Java-Code aktivieren.


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

Wenn Sie Log4j für das Logging verwenden, können Sie den Log4j JDK Logging Adapter verwenden, um JUL-Nachrichten zu protokollieren. Dies kann über eine SystemProperty oder mithilfe der Log4jBridgeHandler und einer JUL-logging.properties-Datei konfiguriert werden.

Systemattribut

-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

Log4j-Bridge-Handler

handlers = org.apache.logging.log4j.jul.Log4jBridgeHandler
org.apache.logging.log4j.jul.Log4jBridgeHandler.propagateLevels = true

Mit diesen Einstellungen werden Ad Manager API-Logs in jeden Logger mit der Stufe CONFIG oder höher geschrieben. In der folgenden log4j2.xml-Beispieldatei wird ein Logger konfiguriert, der in System.out schreibt.

<?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>

Fehler verarbeiten

Alle Ad Manager API-Fehler sind Unterklassen von ApiException in der Java-Clientbibliothek.

Die Methode ApiException.getReason() gibt einen String zurück, der Fehlertypen eindeutig identifiziert. Anhand dieser Informationen können Sie entscheiden, wie Sie mit dem Fehler umgehen möchten.

Alle Fehler außer 404 Not Found und 401 Unauthorized enthalten ErrorDetails mit zusätzlichen Informationen. Bei 400 Bad Request-Fehlern enthält ErrorDetails ein BadRequest-Objekt mit einer Liste von FieldViolations.

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();
    }
  }
}

Ad Manager API-Fehler enthalten auch eine eindeutige request_id, die Sie dem Support zur Unterstützung bei der Fehlerbehebung zur Verfügung stellen können. Im folgenden Beispiel wird request_id extrahiert.

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

Ressourcennamen erstellen

Die Clientbibliothek bietet Hilfsklassen zum Erstellen von Ressourcennamen aus IDs.

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

// ...

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

Proxy-Einstellungen konfigurieren

Die Java-Clientbibliothek berücksichtigt sowohl die Systemeigenschaftseinstellungen http.proxyHost als auch https.proxyHost. Weitere Informationen zu diesen Einstellungen finden Sie unter Java-Netzwerke und Proxys.