Java

Google มีไลบรารีของไคลเอ็นต์ Java สำหรับโต้ตอบกับ Ad Manager API เราขอแนะนำให้ใช้ไลบรารีของไคลเอ็นต์กับ Apache Maven หรือ Gradle

หากต้องการเริ่มต้นใช้งาน ให้สร้างโปรเจ็กต์ใหม่ใน IDE ที่คุณเลือก หรือเพิ่มทรัพยากร Dependency ไปยังโปรเจ็กต์ที่มีอยู่ Google เผยแพร่อาร์ติแฟกต์ของไลบรารีของไคลเอ็นต์ไปยัง ที่เก็บส่วนกลางของ Maven เป็น 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'

กำหนดค่าข้อมูลเข้าสู่ระบบ

ไลบรารีของไคลเอ็นต์ Java ใช้ OAuth2 และข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน (ADC) เพื่อตรวจสอบสิทธิ์

ADC จะค้นหาข้อมูลเข้าสู่ระบบตามลำดับในตำแหน่งต่อไปนี้

  1. GOOGLE_APPLICATION_CREDENTIALS ตัวแปรสภาพแวดล้อม
  2. ข้อมูลเข้าสู่ระบบของผู้ใช้ที่ตั้งค่าผ่าน Google Cloud CLI (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);
    }
  }
}

ดูตัวอย่างวิธีการและแหล่งข้อมูลอื่นๆ ได้ที่ที่เก็บ 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 Adapter เพื่อบันทึกข้อความ JUL ได้ ซึ่งกำหนดค่าได้ผ่าน SystemProperty หรือโดย ใช้ Log4jBridgeHandler และไฟล์ JUL logging.properties

พร็อพเพอร์ตี้ของระบบ

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

ตัวแฮนเดิล Log4j Bridge

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

การตั้งค่าเหล่านี้จะเขียนบันทึก API ของ Ad Manager ไปยัง 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>

จัดการข้อผิดพลาด

ข้อผิดพลาดทั้งหมดของ Ad Manager API เป็นคลาสย่อยของ ApiException ในไลบรารีของไคลเอ็นต์ Java

เมธอด ApiException.getReason() จะแสดงผลสตริงที่ระบุประเภทข้อผิดพลาดที่ไม่ซ้ำกัน ใช้เพื่อกำหนดวิธีจัดการข้อผิดพลาด

ข้อผิดพลาดทั้งหมด ยกเว้น 404 Not Found และ 401 Unauthorized จะมี ErrorDetails พร้อมข้อมูลเพิ่มเติม สำหรับข้อผิดพลาด 400 Bad Request ErrorDetails มีออบเจ็กต์ BadRequest ที่มีรายการ 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();
    }
  }
}

ข้อผิดพลาดของ 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");

ตั้งค่าพร็อกซี

ไลบรารีของไคลเอ็นต์ Java จะใช้การตั้งค่าพร็อพเพอร์ตี้ระบบทั้ง http.proxyHost และ https.proxyHost ดูรายละเอียดเพิ่มเติมเกี่ยวกับการตั้งค่าเหล่านี้ได้ที่ เครือข่ายและพร็อกซี Java