Google proporciona una biblioteca cliente de Java para interactuar con la API de Ad Manager. Te recomendamos que uses 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 bibliotecas cliente en el repositorio central de Maven como com.google.api-ads/ad-manager.
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'
Configura las credenciales
La biblioteca cliente de Java usa OAuth2 y las credenciales predeterminadas de la aplicación (ADC) para la autenticación.
ADC busca las credenciales en orden en las siguientes ubicaciones:
- Variable de entorno
GOOGLE_APPLICATION_CREDENTIALS - Credenciales de usuario configuradas a través de Google Cloud CLI (gcloud CLI)
- Cuando se ejecuta en Google Cloud, la cuenta de servicio adjunta 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 métodos síncronos y asíncronos para cada método de 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 usa java.util.logging (JUL) para registrar los detalles de las solicitudes y respuestas HTTP, incluidos la URL, los encabezados y el contenido.
Para habilitar el registro, establece el registrador de esta clase en un nivel de registro de CONFIG o superior. Los pasos para esto difieren según la implementación de registro que uses.
JUL
Para habilitar el registro, establece com.google.api.client.http.level en CONFIG o un nivel superior en tu archivo logging.properties.
handlers=java.util.logging.ConsoleHandler
com.google.api.client.http.level=CONFIG
java.util.logging.ConsoleHandler.level=CONFIG
También 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 el registro, puedes usar el adaptador de registros para JDK de Log4j para registrar mensajes de JUL. Esto se puede configurar a través de un SystemProperty o con el Log4jBridgeHandler y un archivo logging.properties de JUL.
Propiedad del sistema
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
Controlador de puente de Log4j
handlers = org.apache.logging.log4j.jul.Log4jBridgeHandler
org.apache.logging.log4j.jul.Log4jBridgeHandler.propagateLevels = true
Estos parámetros de configuración escriben registros de la API de Ad Manager en cualquier Logger con un nivel de CONFIG o superior. El siguiente archivo log4j2.xml de ejemplo configura un Logger 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>
Soluciona errores
Todos los errores de la API de Ad Manager son subclases de ApiException en la biblioteca cliente de Java.
El método ApiException.getReason() devuelve una cadena que identifica de forma única los tipos de error. Úsalo para determinar cómo controlar el error.
Todos los errores, excepto 404 Not Found y 401 Unauthorized, contienen ErrorDetails con información adicional. En el caso de los errores de 400 Bad Request, ErrorDetails contiene un objeto BadRequest con una lista de 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();
}
}
}
Los errores de la API de Ad Manager también incluyen un request_id único que puedes proporcionar al equipo de asistencia al cliente para obtener ayuda con la solución de problemas. En el siguiente ejemplo, se extrae request_id.
ErrorDetails errorDetails = apiException.getErrorDetails();
if (errorDetails != null && errorDetails.getRequestInfo() != null) {
// Unique request identifier.
String requestId = errorDetails.getRequestInfo().getRequestId();
}
Cómo construir nombres de recursos
La biblioteca cliente proporciona clases de ayuda para compilar nombres de recursos a partir de 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 la configuración de las propiedades del sistema http.proxyHost y https.proxyHost. Para obtener más detalles sobre estos parámetros de configuración, consulta Java Networking and Proxies.