Java

Google, Ad Manager API ile etkileşim kurmak için bir Java istemci kitaplığı sağlar. İstemci kitaplığını Apache Maven veya Gradle ile kullanmanızı öneririz.

Başlamak için tercih ettiğiniz IDE'de yeni bir proje oluşturun veya bağımlılığı mevcut bir projeye ekleyin. Google, istemci kitaplığı yapılarını Maven merkezi deposunda com.google.api-ads/ad-manager olarak yayınlar.

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'

Kimlik bilgilerini yapılandırma

Java istemci kitaplığı, kimlik doğrulamak için OAuth2 ve Uygulama Varsayılan Kimlik Bilgileri (ADC) kullanır.

ADC, kimlik bilgilerini aşağıdaki konumlarda sırayla arar:

  1. GOOGLE_APPLICATION_CREDENTIALS ortam değişkeni.
  2. Google Cloud CLI (gcloud CLI) aracılığıyla ayarlanan kullanıcı kimlik bilgileri.
  3. Google Cloud'da çalışırken Google Cloud kaynağına eklenen hizmet hesabı.

ADC kimlik bilgilerinizi oluşturma ve yapılandırma hakkında bilgi edinmek için Kimlik doğrulama başlıklı makaleyi inceleyin.

İlk isteğinizi gönderme

Her hizmette, her REST yöntemi için hem senkron hem de asenkron yöntemler içeren bir ServiceClient nesnesi bulunur. Aşağıdaki örnek, Network öğesini eşzamanlı olarak okur.

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);
    }
  }
}

Diğer yöntem ve kaynak örnekleri için GitHub deposuna googleapis/google-cloud-java bakın.

HTTP isteklerini ve yanıtlarını günlüğe kaydetme

com.google.api.client.http.HttpTransport sınıfı tüm HTTP isteklerini yapar. Bu sınıf, URL, üstbilgiler ve içerik dahil olmak üzere HTTP isteği ve yanıt ayrıntılarını günlüğe kaydetmek için java.util.logging (JUL) kullanır.

Günlük kaydını etkinleştirmek için bu sınıfın günlükçüsünü CONFIG veya daha yüksek bir günlük düzeyine ayarlayın. Bu işlemle ilgili adımlar, kullandığınız günlük kaydı uygulamasına göre farklılık gösterir.

TEM

Günlük kaydını etkinleştirmek için com.google.api.client.http.level değerini logging.properties dosyanızda CONFIG veya daha yüksek bir değere ayarlayın.

handlers=java.util.logging.ConsoleHandler
com.google.api.client.http.level=CONFIG
java.util.logging.ConsoleHandler.level=CONFIG

Alternatif olarak, Java kodunuzda günlüğü etkinleştirebilirsiniz.


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

Günlüğe kaydetme için Log4j kullanıyorsanız JUL mesajlarını günlüğe kaydetmek için Log4j JDK Logging Adapter'ı kullanabilirsiniz. Bu, bir SystemProperty aracılığıyla veya Log4jBridgeHandler ve JUL logging.properties dosyası kullanılarak yapılandırılabilir.

System Mülkü

-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

Bu ayarlar, Ad Manager API günlüklerini CONFIG veya daha yüksek düzeydeki herhangi bir Logger'a yazar. Aşağıdaki örnek log4j2.xml dosyası, System.out konumuna yazan bir Logger'ı yapılandırır.

<?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>

Hataları işleme

Tüm Ad Manager API hataları, Java istemci kitaplığındaki ApiException sınıfının alt sınıflarıdır.

ApiException.getReason() yöntemi, hata türlerini benzersiz şekilde tanımlayan bir dize döndürür. Hatayı nasıl ele alacağınızı belirlemek için bunu kullanın.

404 Not Found ve 401 Unauthorized dışındaki tüm hatalar, ek bilgilerle birlikte ErrorDetails içerir. 400 Bad Request hataları için ErrorDetails, BadRequest nesnesi içerir ve bu nesnede FieldViolations listesi bulunur.

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 hataları, sorun giderme konusunda yardım almak için destek ekibine iletebileceğiniz benzersiz bir request_id de içerir. Aşağıdaki örnekte request_id ayıklanmaktadır.

ErrorDetails errorDetails = apiException.getErrorDetails();
if (errorDetails != null && errorDetails.getRequestInfo() != null) {
  // Unique request identifier.
  String requestId = errorDetails.getRequestInfo().getRequestId();
}

Kaynak adları oluşturma

İstemci kitaplığı, kimliklerden kaynak adları oluşturmak için yardımcı sınıflar sağlar.

import com.google.ads.admanager.v1.OrderName;

// ...

//  Constructs a String in the format:
//  "networks/{networkCode}/orders/{orderId}"
OrderName.of("123", "789");

Proxy ayarlarını yapılandırma

Java istemci kitaplığı hem http.proxyHost hem de https.proxyHost Sistem Özelliği ayarlarını dikkate alır. Bu ayarlar hakkında daha fazla bilgi için Java ağ iletişimi ve proxy'ler başlıklı makaleyi inceleyin.