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:
- biến môi trường
GOOGLE_APPLICATION_CREDENTIALS. - 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).
- 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.