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.59.0</version>
</dependency>
Gradle
implementation 'com.google.api-ads:ad-manager:0.59.0'
กำหนดค่าข้อมูลเข้าสู่ระบบ
ไลบรารีของไคลเอ็นต์ Java ใช้ OAuth2 และข้อมูลรับรองเริ่มต้นของแอปพลิเคชัน (ADC) เพื่อตรวจสอบสิทธิ์
ADC จะค้นหาข้อมูลเข้าสู่ระบบตามลำดับในตำแหน่งต่อไปนี้
- ตัวแปรสภาพแวดล้อม
GOOGLE_APPLICATION_CREDENTIALS - ข้อมูลเข้าสู่ระบบของผู้ใช้ที่ตั้งค่าผ่าน Google Cloud CLI (gcloud CLI)
- เมื่อทำงานใน 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
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
เมธอด 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