Java

Google proporciona una biblioteca cliente de Java para interactuar con la API de Ad Manager. Te recomendamos usar la biblioteca cliente con Apache Maven o Gradle.

Para comenzar, crea un proyecto nuevo en el IDE que prefieras o agrega la dependencia a un proyecto existente. Google publica artefactos de la biblioteca cliente para el repositorio central de 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'

Configura las credenciales

La biblioteca cliente de Java usa OAuth2 y las credenciales predeterminadas de la aplicación. (ADC) para autenticarse.

ADC busca las credenciales en orden en las siguientes ubicaciones:

  1. Variable de entorno GOOGLE_APPLICATION_CREDENTIALS.
  2. Credenciales de usuario configuradas a través de Google Cloud CLI (gcloud CLI).
  3. Cuando se ejecuta en Google Cloud, la cuenta de servicio conectada al recurso de Google Cloud.

Para crear y configurar tus credenciales de ADC, consulta Autenticación.

Realiza tu primera solicitud

Cada servicio tiene un objeto ServiceClient con síncrono y asíncrono para cada método REST. En el siguiente ejemplo, se lee un Network de forma síncrona.

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

Para ver ejemplos de otros métodos y recursos, consulta el repositorio de GitHub googleapis/google-cloud-java

Registra solicitudes y respuestas HTTP

La clase com.google.api.client.http.HttpTransport realiza todas las solicitudes HTTP. Esta clase utiliza java.util.logging (JUL) para registrar solicitudes HTTP y detalles de respuesta, como URL, encabezados y contenido.

Para habilitar el registro, configura el registrador de esta clase en un nivel de registro de CONFIG o una versión posterior. Los pasos para esto varían según los registros implementación que usas.

JUL

Para habilitar el registro, establece com.google.api.client.http.level en CONFIG o superior en tu archivo logging.properties.

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

Como alternativa, puedes habilitar el registro en tu código 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 usas Log4j para los registros, puedes usar Adaptador de Logging JDK de Log4j para registrar mensajes JUL. Esto se puede configurar con un SystemProperty o con con Log4jBridgeHandler y un archivo logging.properties de JUL.

Propiedad del sistema

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

Controlador de puentes Log4j

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

Esta configuración escribe registros de la API de Ad Manager en cualquier registrador con un nivel de CONFIG o una versión posterior. En el siguiente archivo log4j2.xml de ejemplo, se configura un Registrador que escribe en 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>

Cómo solucionar errores

Todos los errores de la API de Ad Manager son subclases de ApiException en la biblioteca cliente de Java.

Todos los errores, excepto 404 Not Found y 401 Unauthorized, contienen ErrorDetails con información adicional.

Errores de análisis

El campo del motivo del error identifica de forma única los tipos de error. Usa este campo para determinar cómo manejar el error.

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

Los errores de la API de Ad Manager también incluyen un request_id único que puedes proporcionar al equipo de asistencia para obtener y la solución de problemas. En el siguiente ejemplo, se extrae el request_id

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

Construir nombres de recursos

La biblioteca cliente proporciona clases auxiliares para crear nombres de recursos desde de sus IDs.

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

// ...

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

Establece la configuración del proxy

La biblioteca cliente de Java respeta http.proxyHost y https.proxyHost. Configuración de propiedades del sistema. Para obtener más información sobre estos parámetros de configuración, consulta Herramientas de redes y proxies de Java.