Java

گوگل یک کتابخانه کلاینت جاوا برای تعامل با رابط برنامه‌نویسی کاربردی مدیریت تبلیغات (Ad Manager API) ارائه می‌دهد. ما استفاده از کتابخانه کلاینت را با Apache Maven یا Gradle توصیه می‌کنیم.

برای شروع، یک پروژه جدید در IDE مورد نظر خود ایجاد کنید یا وابستگی را به یک پروژه موجود اضافه کنید. گوگل مصنوعات کتابخانه کلاینت را در مخزن مرکزی Maven با نام com.google.api-ads/ad-manager منتشر می‌کند.

ماون

<!-- pom.xml -->
<dependency>
  <groupId>com.google.api-ads</groupId>
  <artifactId>ad-manager</artifactId>
  <version>0.1.0</version>
</dependency>

گرادل

implementation 'com.google.api-ads:ad-manager:0.1.0'

پیکربندی اعتبارنامه‌ها

کتابخانه کلاینت جاوا از OAuth2 و Application Default Credentials (ADC) برای احراز هویت استفاده می‌کند.

ADC به ترتیب در مکان‌های زیر به دنبال اعتبارنامه‌ها می‌گردد:

  1. متغیر محیطی GOOGLE_APPLICATION_CREDENTIALS .
  2. اعتبارنامه‌های کاربر از طریق رابط خط فرمان گوگل کلود (gcloud CLI) تنظیم شده‌اند.
  3. هنگام اجرا روی Google Cloud، حساب سرویس به منبع Google Cloud متصل می‌شود.

برای ایجاد و پیکربندی اعتبارنامه‌های ADC خود، به بخش احراز هویت مراجعه کنید.

اولین درخواست خود را مطرح کنید

هر سرویس دارای یک شیء ServiceClient با متدهای همزمان و غیرهمزمان برای هر متد REST است. مثال زیر یک Network به صورت همزمان می‌خواند.

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

برای مثال‌هایی از روش‌ها و منابع دیگر، به مخزن گیت‌هاب googleapis/google-cloud-java مراجعه کنید.

ثبت درخواست‌ها و پاسخ‌های HTTP

کلاس com.google.api.client.http.HttpTransport تمام درخواست‌های HTTP را ایجاد می‌کند. این کلاس java.util.logging (JUL) برای ثبت جزئیات درخواست و پاسخ HTTP، از جمله URL، هدرها و محتوا استفاده می‌کند.

برای فعال کردن ثبت وقایع، سطح ثبت وقایع این کلاس را روی CONFIG یا بالاتر تنظیم کنید. مراحل انجام این کار بسته به نوع پیاده‌سازی ثبت وقایعی که استفاده می‌کنید، متفاوت است.

جولای

برای فعال کردن ثبت وقایع، مقدار com.google.api.client.http.level را در فایل logging.properties روی CONFIG یا بالاتر تنظیم کنید.

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

از طرف دیگر، می‌توانید ورود به سیستم را در کد جاوا خود فعال کنید.


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

اگر از Log4j برای ثبت وقایع استفاده می‌کنید، می‌توانید از Log4j JDK Logging Adapter برای ثبت وقایع پیام‌های JUL استفاده کنید. این کار را می‌توان از طریق SystemProperty یا با استفاده از Log4jBridgeHandler و فایل JUL logging.properties پیکربندی کرد.

ویژگی سیستم

-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

هندلر پل Log4j

handlers = org.apache.logging.log4j.jul.Log4jBridgeHandler
org.apache.logging.log4j.jul.Log4jBridgeHandler.propagateLevels = true

این تنظیمات، گزارش‌های API مدیریت تبلیغات را در هر Logger با سطح CONFIG یا بالاتر می‌نویسد. مثال زیر، فایل log4j2.xml Logger را پیکربندی می‌کند که در 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>

مدیریت خطاها

همه خطاهای API مدیر تبلیغات، زیرکلاس‌هایی از ApiException در کتابخانه کلاینت جاوا هستند.

همه خطاها به جز 404 Not Found و 401 Unauthorized حاوی ErrorDetails به همراه اطلاعات اضافی هستند.

خطاهای تجزیه

فیلد دلیل خطا، نوع خطا را به طور منحصر به فرد مشخص می‌کند. از این فیلد برای تعیین نحوه مدیریت خطا استفاده کنید.

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

خطاهای API مدیر تبلیغات همچنین شامل یک request_id منحصر به فرد هستند که می‌توانید برای کمک به عیب‌یابی، آن را به پشتیبانی ارائه دهید. مثال زیر request_id را استخراج می‌کند.

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

ساخت نام منابع

کتابخانه کلاینت، کلاس‌های کمکی برای ساخت نام منابع از روی شناسه‌ها ارائه می‌دهد.

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

// ...

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

تنظیمات پروکسی را پیکربندی کنید

کتابخانه کلاینت جاوا از تنظیمات هر دو سرویس http.proxyHost و https.proxyHost System Property پشتیبانی می‌کند. برای جزئیات بیشتر در مورد این تنظیمات، به Java networking and Proxies مراجعه کنید.