Java

Google fournit une bibliothèque cliente Java pour interagir avec l'API Ad Manager. Nous vous recommandons d'utiliser la bibliothèque cliente avec Apache Maven ou Gradle.

Pour commencer, créez un projet dans l'IDE de votre choix ou ajoutez le à un projet existant. Google publie les artefacts des bibliothèques clientes dans le dépôt central 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'

Configurer les identifiants

La bibliothèque cliente Java utilise OAuth2 et les identifiants par défaut de l'application. (ADC) pour s'authentifier.

ADC recherche les identifiants dans l'ordre aux emplacements suivants:

  1. GOOGLE_APPLICATION_CREDENTIALS.
  2. Identifiants utilisateur configurés via la Google Cloud CLI (gcloud CLI).
  3. Lors de l'exécution sur Google Cloud, le compte de service associé à la ressource Google Cloud

Pour créer et configurer vos identifiants ADC, consultez Authentification.

Faites votre première demande

Chaque service possède un objet ServiceClient avec des valeurs synchrones et asynchrones pour chaque méthode REST. L'exemple suivant indique un objet Network de manière synchrone.

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

Pour obtenir des exemples d'autres méthodes et ressources, consultez le dépôt GitHub googleapis/google-cloud-java

Consigner les requêtes et réponses HTTP

La classe com.google.api.client.http.HttpTransport effectue toutes les requêtes HTTP. Ce cours utilise java.util.logging (JUL) pour consigner les détails des requêtes et des réponses HTTP, y compris l'URL, les en-têtes et contenus.

Pour activer la journalisation, définissez l'enregistreur pour cette classe sur un niveau de journalisation de CONFIG ou version ultérieure. La procédure diffère selon le type de journalisation que vous utilisez.

JUL

Pour activer la journalisation, définissez com.google.api.client.http.level sur CONFIG ou plus haut dans votre fichier logging.properties.

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

Vous pouvez également activer la journalisation dans votre code 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

Si vous utilisez Log4j pour la journalisation, vous pouvez utiliser Adaptateur de journalisation JDK Log4j pour consigner les messages JUL. Vous pouvez configurer cela via un SystemProperty ou à l'aide de Log4jBridgeHandler et d'un fichier JUL logging.properties.

Propriété système

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

Gestionnaire de pont Log4j

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

Ces paramètres permettent d'écrire les journaux de l'API Ad Manager sur n'importe quel enregistreur ayant un niveau CONFIG ou version ultérieure. L'exemple de fichier log4j2.xml suivant configure un Logger qui écrit dans 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>

Gérer les erreurs

Toutes les erreurs de l'API Ad Manager sont des sous-classes de ApiException dans la bibliothèque cliente Java.

Toutes les erreurs, à l'exception de 404 Not Found et 401 Unauthorized, contiennent ErrorDetails avec des informations supplémentaires.

Erreurs d'analyse

Le champ "Motif de l'erreur" identifie les types d'erreurs de manière unique. Utilisez ce champ pour déterminer comment gérer l'erreur.

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

Les erreurs de l'API Ad Manager incluent également un request_id unique que vous pouvez fournir à l'assistance pour obtenir de l'aide le dépannage. L'exemple suivant extrait les request_id

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

Créer des noms de ressources

La bibliothèque cliente fournit des classes d'assistance pour créer des noms de ressources à partir de ID.

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

// ...

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

Configurer les paramètres de proxy

La bibliothèque cliente Java respecte à la fois http.proxyHost et https.proxyHost Paramètres de la propriété système. Pour en savoir plus sur ces paramètres, consultez Mise en réseau et proxys Java.