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.56.0</version>
</dependency>
Gradle
implementation 'com.google.api-ads:ad-manager:0.56.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 Bridge
handlers = org.apache.logging.log4j.jul.Log4jBridgeHandler
org.apache.logging.log4j.jul.Log4jBridgeHandler.propagateLevels = true
การตั้งค่าเหล่านี้จะเขียนบันทึก API ของ Ad Manager ไปยัง 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