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.1.0</version>
</dependency>

Gradle

implementation 'com.google.api-ads:ad-manager:0.1.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öntemler ve kaynaklarla ilgili örnekler için GitHub deposuna googleapis/google-cloud-java göz atı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 kaydedicisini 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, 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.

404 Not Found ve 401 Unauthorized dışındaki tüm hatalar ErrorDetails ile ek bilgiler içerir.

Ayrıştırma hataları

Hata nedeni alanı, hata türlerini benzersiz bir şekilde tanımlar. Hatayı nasıl ele alacağınızı belirlemek için bu alanı kullanın.

ErrorDetails errorDetails = apiException.getErrorDetails();
if (errorDetails != null) {
  // Unique error code in UPPER_SNAKE_CASE.
  String errorCode = errorDetails.getReason();
}

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 örnek, request_id değerini ayıklar.

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.