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.60.0</version>
</dependency>
Gradle
implementation 'com.google.api-ads:ad-manager:0.60.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:
- Variable de entorno
GOOGLE_APPLICATION_CREDENTIALS. - Credenciales de usuario configuradas con 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 HTTP y respuestas, 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 varían 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 valor 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 registrar, puedes usar el
adaptador de registro de 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. En el siguiente archivo log4j2.xml de ejemplo, se 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 errores. Usa este valor para determinar cómo controlar el error.
Todos los errores, excepto 404 Not Found y 401 Unauthorized, contienen ErrorDetails
con información adicional. Para los errores 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 para obtener ayuda con 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();
}
Crea nombres de recursos
La biblioteca cliente proporciona clases auxiliares 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 los parámetros de 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
Herramientas de redes y proxies de Java.