Google udostępnia bibliotekę klienta Java do interakcji z interfejsem API Ad Managera. Zalecamy używanie biblioteki klienta z Apache Maven lub Gradle.
Aby rozpocząć, utwórz nowy projekt w wybranym IDE lub dodaj zależność do istniejącego projektu. Google publikuje artefakty biblioteki klienta w centralnym repozytorium Maven jako 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'
Konfigurowanie danych logowania
Biblioteka klienta Java używa do uwierzytelniania protokołu OAuth2 i domyślnego uwierzytelniania aplikacji (ADC).
ADC szuka danych logowania w kolejności w tych lokalizacjach:
GOOGLE_APPLICATION_CREDENTIALSzmienna środowiskowa.- Dane logowania użytkownika skonfigurowane za pomocą interfejsu wiersza poleceń Google Cloud (gcloud CLI).
- Gdy usługa jest uruchomiona w Google Cloud, jest to konto usługi dołączone do zasobu Google Cloud.
Informacje o tworzeniu i konfigurowaniu danych logowania ADC znajdziesz w sekcji Uwierzytelnianie.
Przesyłanie pierwszej prośby
Każda usługa ma obiekt ServiceClient z metodami synchronicznymi i asynchronicznymi dla każdej metody REST. W tym przykładzie odczytujemy Network synchronicznie.
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);
}
}
}
Przykłady innych metod i zasobów znajdziesz w repozytorium GitHub googleapis/google-cloud-java.
Logowanie żądań i odpowiedzi HTTP
Klasa com.google.api.client.http.HttpTransport wysyła wszystkie żądania HTTP.
Ta klasa używa java.util.logging (JUL) do rejestrowania szczegółów żądań i odpowiedzi HTTP, w tym adresu URL, nagłówków i treści.
Aby włączyć rejestrowanie, ustaw rejestrator dla tej klasy na poziom logowania CONFIG lub wyższy. Czynności, które musisz wykonać, różnią się w zależności od używanej implementacji rejestrowania.
LIP
Aby włączyć rejestrowanie, ustaw w pliku logging.properties wartość com.google.api.client.http.level lub wyższą.CONFIG
handlers=java.util.logging.ConsoleHandler
com.google.api.client.http.level=CONFIG
java.util.logging.ConsoleHandler.level=CONFIG
Możesz też włączyć rejestrowanie w kodzie 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
Jeśli do rejestrowania używasz Log4j, możesz użyć adaptera rejestrowania Log4j JDK do rejestrowania komunikatów JUL. Możesz to skonfigurować za pomocą pliku SystemProperty lub za pomocą pliku Log4jBridgeHandler i pliku JUL logging.properties.
Właściwość systemu
-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
Te ustawienia zapisują logi interfejsu API Ad Managera w dowolnym rejestratorze z poziomem CONFIG lub wyższym. Poniższy przykład pliku log4j2.xml konfiguruje rejestrator, który zapisuje dane w pliku 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>
Obsługuj błędy
Wszystkie błędy interfejsu API Ad Managera są podklasami klasy ApiException w bibliotece klienta Java.
Metoda ApiException.getReason() zwraca ciąg znaków, który jednoznacznie identyfikuje typy błędów. Użyj go, aby określić sposób postępowania w przypadku błędu.
Wszystkie błędy z wyjątkiem błędów 404 Not Found i 401 Unauthorized zawierają ErrorDetails z dodatkowymi informacjami. W przypadku błędów 400 Bad Request element ErrorDetails zawiera obiekt BadRequest z listą 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();
}
}
}
Błędy interfejsu API Ad Managera zawierają też unikalny request_id, który możesz przekazać zespołowi pomocy, aby uzyskać pomoc w rozwiązywaniu problemów. Ten przykład wyodrębnia element request_id.
ErrorDetails errorDetails = apiException.getErrorDetails();
if (errorDetails != null && errorDetails.getRequestInfo() != null) {
// Unique request identifier.
String requestId = errorDetails.getRequestInfo().getRequestId();
}
Tworzenie nazw zasobów
Biblioteka klienta udostępnia klasy pomocnicze do tworzenia nazw zasobów na podstawie identyfikatorów.
import com.google.ads.admanager.v1.OrderName;
// ...
// Constructs a String in the format:
// "networks/{networkCode}/orders/{orderId}"
OrderName.of("123", "789");
Konfigurowanie ustawień serwera proxy
Biblioteka klienta w języku Java uwzględnia ustawienia http.proxyHost i https.proxyHost. Więcej informacji o tych ustawieniach znajdziesz w artykule Java networking and Proxies (Sieci Java i serwery proxy).