Java

Google מספקת ספריית לקוח ב-Java לאינטראקציה עם Ad Manager API. אנחנו ממליצים להשתמש בספריית הלקוח עם Apache Maven או Gradle.

כדי להתחיל, צריך ליצור פרויקט חדש בסביבת הפיתוח המשולבת (IDE) או להוסיף את או תלויה בפרויקט קיים. Google מפרסמת ארטיפקטים של ספריית הלקוח לצורך במאגר המרכזי של Maven com.google.api-ads/ad-manager

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'

הגדרת פרטי הכניסה

ספריית הלקוח של Java משתמשת ב-OAuth2 וב-Application Default Credentials (ADC) לאימות.

אפשר לחפש פרטי כניסה ב-ADC במיקומים הבאים:

  1. משתנה סביבה GOOGLE_APPLICATION_CREDENTIALS.
  2. פרטי כניסה של משתמשים שהוגדרו באמצעות Google Cloud CLI (CLI של gcloud).
  3. כשמריצים ב-Google Cloud, חשבון השירות שמצורף למשאב של Google Cloud.

במאמר הבא מוסבר איך ליצור ולהגדיר את פרטי הכניסה ל-ADC. אימות.

יצירת הבקשה הראשונה

לכל שירות יש אובייקט ServiceClient עם גם סינכרוני וגם אסינכרוני לכל method של 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);
    }
  }
}

דוגמאות של שיטות ומשאבים אחרים מופיעות במאגר של GitHub 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 לערך CONFIG או גבוה יותר בקובץ logging.properties.

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

לחלופין, אפשר להפעיל רישום ביומן בקוד 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

אם אתם משתמשים ב-Log4j לרישום ביומן, אפשר להשתמש מתאם Log4j JDK Logging כדי לתעד הודעות של JUL. אפשר להגדיר זאת דרך SystemProperty או באמצעות Log4jBridgeHandler והקובץ 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

ההגדרות האלה כותבות יומני Ad Manager API לכל יומן רישום ברמת CONFIG ומעלה. הקובץ log4j2.xml לדוגמה הבא מגדיר יומן שכותב אל 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>

טיפול בשגיאות

כל השגיאות ב-Ad Manager API הן מחלקות משנה של ApiException בספריית הלקוח של Java.

כל השגיאות מלבד 404 Not Found ו-401 Unauthorized מכילות ErrorDetails עם מידע נוסף.

ניתוח שגיאות

השדה 'סיבת השגיאה' מזהה באופן ייחודי את סוגי השגיאות. כדאי להשתמש בשדה הזה כדי לקבוע איך לטפל בשגיאה.

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

השגיאות ב-Ad Manager 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");

קביעת הגדרות לשרת proxy

ספריית הלקוח של Java מכבדת גם את http.proxyHost וגם את https.proxyHost הגדרות של נכס מערכת. לפרטים נוספים על ההגדרות האלה, אפשר לעיין במאמר רישות Java ושרתי proxy.