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