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 les artefacts de la 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.56.0</version>
</dependency>
Gradle
implementation 'com.google.api-ads:ad-manager:0.56.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 :
- variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS. - Identifiants utilisateur configurés avec Google Cloud CLI (gcloud CLI).
- 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.
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. Les étapes à suivre varient en fonction de l'implémentation de la 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.
La méthode ApiException.getReason() renvoie une chaîne qui identifie de manière unique les types d'erreur. Utilisez-le pour déterminer comment gérer l'erreur.
Toutes les erreurs, à l'exception de 404 Not Found et 401 Unauthorized, contiennent ErrorDetails avec des informations supplémentaires. Pour les erreurs 400 Bad Request, ErrorDetails contient un objet BadRequest avec une liste 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();
}
}
}
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.