Google 提供 Java 用戶端程式庫,可與 Ad Manager API 互動。建議您搭配使用 Apache Maven 或 Gradle 與用戶端程式庫。
如要開始使用,請在所選 IDE 中建立新專案,或將依附元件新增至現有專案。Google 會將用戶端程式庫構件發布至 Maven Central 存放區,做為 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 (JUL) 記錄 HTTP 要求和回應詳細資料,包括網址、標頭和內容。
如要啟用記錄功能,請將這個類別的記錄器設為 CONFIG 以上的記錄層級。視您使用的記錄實作方式而定,步驟會有所不同。
7 月
如要啟用記錄功能,請在 logging.properties 檔案中將 com.google.api.client.http.level 設為 CONFIG 以上。
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
這些設定會將 Ad Manager API 記錄寫入層級為 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>
處理錯誤
Java 用戶端程式庫中的所有 Ad Manager API 錯誤,都是 ApiException 的子類別。
除了 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();
}
建構資源名稱
用戶端程式庫提供輔助類別,可從 ID 建構資源名稱。
import com.google.ads.admanager.v1.OrderName;
// ...
// Constructs a String in the format:
// "networks/{networkCode}/orders/{orderId}"
OrderName.of("123", "789");
指定 Proxy 設定
Java 用戶端程式庫會遵守 http.proxyHost 和 https.proxyHost 系統屬性設定。如要進一步瞭解這些設定,請參閱「Java 網路和 Proxy」。