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

Gradle

implementation 'com.google.api-ads:ad-manager:0.1.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, ส่วนหัว และ เนื้อหา

หากต้องการเปิดใช้การบันทึก ให้ตั้งค่า Logger สำหรับคลาสนี้เป็นระดับการบันทึก CONFIG ขึ้นไป ขั้นตอนในการดำเนินการนี้จะแตกต่างกันไปขึ้นอยู่กับการติดตั้งใช้งานการบันทึกที่คุณใช้

JUL

หากต้องการเปิดใช้การบันทึก ให้ตั้งค่า 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 และไฟล์ logging.properties ของ JUL

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

-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

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

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

ข้อผิดพลาดทั้งหมดของ 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();
}

สร้างชื่อทรัพยากร

ไลบรารีของไคลเอ็นต์มีคลาส Helper สำหรับสร้างชื่อทรัพยากรจากรหัส

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 Networking and Proxies