Google stellt eine Java-Clientbibliothek für die Interaktion mit der Ad Manager API bereit. Wir empfehlen, die Clientbibliothek mit Apache Maven oder Gradle zu verwenden.
Erstellen Sie dazu ein neues Projekt in der IDE Ihrer Wahl oder fügen Sie die Abhängigkeit einem vorhandenen Projekt hinzu. Google veröffentlicht Clientbibliotheksartefakte im zentralen Maven-Repository als 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'
Anmeldedaten konfigurieren
Die Java-Clientbibliothek verwendet OAuth2 und Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) zur Authentifizierung.
ADC sucht in der folgenden Reihenfolge an folgenden Standorten nach Anmeldedaten:
- Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS. - Nutzeranmeldedaten, die über die Google Cloud CLI (gcloud CLI) eingerichtet wurden.
- Wenn die Anwendung in Google Cloud ausgeführt wird, das Dienstkonto, das an die Google Cloud-Ressource angehängt ist.
Informationen zum Erstellen und Konfigurieren von ADC-Anmeldedaten finden Sie unter Authentifizierung.
Erste Anfrage senden
Jeder Dienst hat ein ServiceClient-Objekt mit synchronen und asynchronen Methoden für jede REST-Methode. Im folgenden Beispiel wird eine Network synchron gelesen.
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);
}
}
}
Beispiele für andere Methoden und Ressourcen finden Sie im GitHub-Repository googleapis/google-cloud-java.
HTTP-Anfragen und ‑Antworten protokollieren
Die Klasse com.google.api.client.http.HttpTransport führt alle HTTP-Anfragen aus.
Diese Klasse verwendet java.util.logging (JUL) für die Protokollierung von Details zu HTTP-Anfragen und ‑Antworten, einschließlich URL, Headern und Inhalt.
Wenn Sie das Logging aktivieren möchten, legen Sie für den Logger dieser Klasse die Logebene CONFIG oder höher fest. Die Schritte hierfür unterscheiden sich je nach verwendeter Protokollierungsimplementierung.
JUL
Wenn Sie das Logging aktivieren möchten, setzen Sie com.google.api.client.http.level in Ihrer logging.properties-Datei auf CONFIG oder höher.
handlers=java.util.logging.ConsoleHandler
com.google.api.client.http.level=CONFIG
java.util.logging.ConsoleHandler.level=CONFIG
Alternativ können Sie das Logging in Ihrem Java-Code aktivieren.
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
Wenn Sie Log4j für das Logging verwenden, können Sie den Log4j JDK Logging-Adapter verwenden, um JUL-Nachrichten zu protokollieren. Dies kann über eine SystemProperty-Datei oder mit der Log4jBridgeHandler-Datei und einer JUL-logging.properties-Datei konfiguriert werden.
Systemattribut
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
Log4j-Bridge-Handler
handlers = org.apache.logging.log4j.jul.Log4jBridgeHandler
org.apache.logging.log4j.jul.Log4jBridgeHandler.propagateLevels = true
Mit diesen Einstellungen werden Ad Manager API-Logs in alle Logger mit dem Level CONFIG oder höher geschrieben. In der folgenden Beispieldatei log4j2.xml wird ein Logger konfiguriert, der in System.out schreibt.
<?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>
Fehler verarbeiten
Alle Ad Manager API-Fehler sind Unterklassen von ApiException in der Java-Clientbibliothek.
Die Methode ApiException.getReason() gibt einen String zurück, der Fehlertypen eindeutig identifiziert. Anhand dieser Informationen können Sie ermitteln, wie der Fehler behoben werden kann.
Alle Fehler außer 404 Not Found und 401 Unauthorized enthalten ErrorDetails mit zusätzlichen Informationen. Bei 400 Bad Request-Fehlern enthält ErrorDetails ein BadRequest-Objekt mit einer Liste von 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();
}
}
}
Ad Manager-API-Fehler enthalten auch eine eindeutige request_id, die Sie dem Support zur Fehlerbehebung zur Verfügung stellen können. Im folgenden Beispiel wird request_id extrahiert.
ErrorDetails errorDetails = apiException.getErrorDetails();
if (errorDetails != null && errorDetails.getRequestInfo() != null) {
// Unique request identifier.
String requestId = errorDetails.getRequestInfo().getRequestId();
}
Ressourcennamen erstellen
Die Clientbibliothek bietet Hilfsklassen zum Erstellen von Ressourcennamen aus IDs.
import com.google.ads.admanager.v1.OrderName;
// ...
// Constructs a String in the format:
// "networks/{networkCode}/orders/{orderId}"
OrderName.of("123", "789");
Proxy-Einstellungen konfigurieren
Die Java-Clientbibliothek berücksichtigt sowohl die Einstellungen für das Systemattribut http.proxyHost als auch für https.proxyHost. Weitere Informationen zu diesen Einstellungen finden Sie unter Java-Netzwerk und Proxys.