Java

Google cung cấp một thư viện ứng dụng Java để tương tác với API Ad Manager. Bạn nên sử dụng thư viện ứng dụng với Apache Maven hoặc Gradle.

Để bắt đầu, hãy tạo một dự án mới trong IDE mà bạn chọn hoặc thêm phần phụ thuộc vào một dự án hiện có. Google phát hành các cấu phần phần mềm của thư viện ứng dụng lên kho lưu trữ trung tâm Maven dưới dạng com.google.api-ads/ad-manager.

Maven

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

Gradle

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

Định cấu hình thông tin đăng nhập

Thư viện ứng dụng Java sử dụng OAuth2 và Thông tin xác thực mặc định của ứng dụng (ADC) để xác thực.

ADC tìm thông tin xác thực theo thứ tự ở các vị trí sau:

  1. biến môi trường GOOGLE_APPLICATION_CREDENTIALS.
  2. Thông tin đăng nhập của người dùng được thiết lập thông qua Giao diện dòng lệnh (CLI) của Google Cloud (gcloud CLI).
  3. Khi chạy trên Google Cloud, tài khoản dịch vụ được đính kèm vào tài nguyên Google Cloud.

Để tạo và định cấu hình thông tin xác thực ADC, hãy xem phần Xác thực.

Thực hiện yêu cầu đầu tiên

Mỗi dịch vụ có một đối tượng ServiceClient với cả phương thức đồng bộ và không đồng bộ cho mỗi phương thức REST. Ví dụ sau đây đọc Network một cách đồng bộ.

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

Để biết ví dụ về các phương thức và tài nguyên khác, hãy xem kho lưu trữ GitHub googleapis/google-cloud-java.

Ghi nhật ký các yêu cầu và phản hồi HTTP

Lớp com.google.api.client.http.HttpTransport thực hiện tất cả các yêu cầu HTTP. Lớp này sử dụng java.util.logging (JUL) để ghi nhật ký thông tin chi tiết về yêu cầu HTTP và phản hồi, bao gồm cả URL, tiêu đề và nội dung.

Để bật tính năng ghi nhật ký, hãy đặt trình ghi nhật ký cho lớp này ở cấp độ ghi nhật ký từ CONFIG trở lên. Các bước thực hiện việc này sẽ khác nhau tuỳ thuộc vào cách triển khai ghi nhật ký mà bạn sử dụng.

T7

Để bật tính năng ghi nhật ký, hãy đặt com.google.api.client.http.level thành CONFIG hoặc cao hơn trong tệp logging.properties.

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

Ngoài ra, bạn có thể bật tính năng ghi nhật ký trong mã 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

Nếu sử dụng Log4j để ghi nhật ký, bạn có thể dùng Bộ chuyển đổi ghi nhật ký Log4j JDK để ghi nhật ký thông báo JUL. Bạn có thể định cấu hình việc này thông qua SystemProperty hoặc bằng cách sử dụng Log4jBridgeHandler và tệp JUL logging.properties.

Tài sản hệ thống

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

Trình xử lý cầu nối Log4j

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

Các chế độ cài đặt này ghi nhật ký API Ad Manager vào bất kỳ Trình ghi nhật ký nào có cấp độ CONFIG trở lên. Tệp log4j2.xml trong ví dụ sau đây định cấu hình một Trình ghi nhật ký ghi vào 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>

Xử lý lỗi

Tất cả lỗi API Ad Manager đều là lớp con của ApiException trong thư viện ứng dụng Java.

Phương thức ApiException.getReason() trả về một chuỗi giúp xác định riêng biệt các loại lỗi. Hãy sử dụng thông tin này để xác định cách xử lý lỗi.

Tất cả lỗi ngoại trừ 404 Not Found và 401 Unauthorized đều chứa ErrorDetails kèm theo thông tin bổ sung. Đối với lỗi 400 Bad Request, ErrorDetails chứa đối tượng BadRequest có danh sách 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();
    }
  }
}

Lỗi API Ad Manager cũng bao gồm một request_id riêng biệt mà bạn có thể cung cấp cho bộ phận hỗ trợ để được trợ giúp khắc phục sự cố. Ví dụ sau đây trích xuất request_id.

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

Tạo tên tài nguyên

Thư viện ứng dụng cung cấp các lớp trợ giúp để tạo tên tài nguyên từ mã nhận dạng.

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

// ...

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

Định cấu hình cài đặt proxy

Thư viện ứng dụng Java tuân thủ cả chế độ cài đặt Thuộc tính hệ thống http.proxyHost và https.proxyHost. Để biết thêm thông tin chi tiết về các chế độ cài đặt này, hãy xem bài viết Mạng Java và Proxy.