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 และข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน (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 (กรกฎาคม) สำหรับการบันทึกรายละเอียดคำขอ 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");

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

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