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 la dépendance à un projet existant. Google publie des artefacts de bibliothèque cliente dans le dépôt central Maven sous la forme 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 l'authentification.

L'ADC recherche les identifiants dans l'ordre suivant :

  1. variable d'environnement GOOGLE_APPLICATION_CREDENTIALS.
  2. Identifiants utilisateur configurés avec Google Cloud CLI (gcloud CLI).
  3. Lorsqu'il s'exécute sur Google Cloud, le compte de service est associé à la ressource Google Cloud.

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

Créer votre première demande

Chaque service possède un objet ServiceClient avec des méthodes synchrones et asynchrones pour chaque méthode REST. L'exemple suivant lit un 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.

Enregistrer les requêtes et les réponses HTTP

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

Pour activer la journalisation, définissez le niveau de journalisation de cette classe sur CONFIG ou plus. La procédure à suivre varie en fonction de l'implémentation de journalisation que vous utilisez.

JUL

Pour activer la journalisation, définissez com.google.api.client.http.level sur CONFIG ou une valeur supérieure 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 l'adaptateur de journalisation JDK Log4j pour consigner les messages JUL. Vous pouvez le configurer à l'aide d'un fichier SystemProperty ou en utilisant Log4jBridgeHandler et 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 écrivent les journaux de l'API Ad Manager dans n'importe quel enregistreur avec un niveau CONFIG ou supérieur. L'exemple de fichier log4j2.xml suivant configure un enregistreur 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 "Raison de l'erreur" identifie de manière unique les types d'erreurs. 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 concernant la résolution des problèmes. L'exemple suivant extrait request_id.

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

Construire des noms de ressources

La bibliothèque cliente fournit des classes d'assistance pour créer des noms de ressources à partir d'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 les paramètres des propriétés système http.proxyHost et https.proxyHost. Pour en savoir plus sur ces paramètres, consultez Mise en réseau Java et proxys.