Google, Ad Manager API ile etkileşim kurmak için bir Java istemci kitaplığı sağlar. İstemci kitaplığını Apache Maven veya Gradle ile kullanmanızı öneririz.
Başlamak için tercih ettiğiniz IDE'de yeni bir proje oluşturun veya bağımlılığı mevcut bir projeye ekleyin. Google, istemci kitaplığı yapılarını Maven merkezi deposunda com.google.api-ads/ad-manager olarak yayınlar.
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'
Kimlik bilgilerini yapılandırma
Java istemci kitaplığı, kimlik doğrulaması için OAuth2 ve Uygulama Varsayılan Kimlik Bilgileri'ni (ADC) kullanır.
ADC, kimlik bilgilerini aşağıdaki konumlarda sırayla arar:
GOOGLE_APPLICATION_CREDENTIALSortam değişkeni.- Google Cloud CLI (gcloud CLI) üzerinden ayarlanan kullanıcı kimlik bilgileri.
- Google Cloud'da çalışırken Google Cloud kaynağına eklenen hizmet hesabı.
ADC kimlik bilgilerinizi oluşturma ve yapılandırma hakkında bilgi edinmek için Kimlik doğrulama başlıklı makaleyi inceleyin.
İlk isteğinizi gönderme
Her hizmette, her REST yöntemi için hem eşzamanlı hem de eşzamansız yöntemleri olan bir ServiceClient nesnesi bulunur. Aşağıdaki örnekte, bir Network eşzamanlı olarak okunmaktadır.
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);
}
}
}
Diğer yöntem ve kaynakların örnekleri için googleapis/google-cloud-java GitHub deposuna bakın.
HTTP isteklerini ve yanıtlarını günlüğe kaydetme
com.google.api.client.http.HttpTransport sınıfı tüm HTTP isteklerini yapar.
Bu sınıf, URL, üstbilgiler ve içerik dahil olmak üzere HTTP isteği ve yanıt ayrıntılarını günlüğe kaydetmek için java.util.logging (JUL) kullanır.
Günlük kaydını etkinleştirmek için bu sınıfın günlükçüsünü CONFIG veya daha yüksek bir günlük düzeyine ayarlayın. Bu işlemle ilgili adımlar, kullandığınız günlük kaydı uygulamasına göre farklılık gösterir.
TEM
Günlük kaydını etkinleştirmek için logging.properties dosyanızda com.google.api.client.http.level değerini CONFIG veya daha yüksek bir değere ayarlayın.
handlers=java.util.logging.ConsoleHandler
com.google.api.client.http.level=CONFIG
java.util.logging.ConsoleHandler.level=CONFIG
Alternatif olarak, Java kodunuzda günlük kaydını etkinleştirebilirsiniz.
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
Günlük kaydı için Log4j kullanıyorsanız JUL mesajlarını günlüğe kaydetmek için Log4j JDK Günlük Kaydı Adaptörü'nü kullanabilirsiniz. Bu, SystemProperty aracılığıyla veya Log4jBridgeHandler ve bir JUL logging.properties dosyası kullanılarak yapılandırılabilir.
System Mülkü
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
Log4j Bridge Handler
handlers = org.apache.logging.log4j.jul.Log4jBridgeHandler
org.apache.logging.log4j.jul.Log4jBridgeHandler.propagateLevels = true
Bu ayarlar, Ad Manager API günlüklerini düzeyi CONFIG veya daha yüksek olan herhangi bir Logger'a yazar. Aşağıdaki örnek log4j2.xml dosyası, System.out dosyasına yazan bir günlükçü yapılandırır.
<?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>
Hataları işleme
Tüm Ad Manager API hataları, Java istemci kitaplığındaki ApiException'in alt sınıflarıdır.
ApiException.getReason() yöntemi, hata türlerini benzersiz şekilde tanımlayan bir dize döndürür. Hatanın nasıl ele alınacağını belirlemek için bu bilgiyi kullanın.
404 Not Found ve 401 Unauthorized dışındaki tüm hatalar, ek bilgiler içeren ErrorDetails öğesini içerir. 400 Bad Request hataları için ErrorDetails, FieldViolations listesi içeren bir BadRequest nesnesi içerir.
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 hataları, sorun giderme konusunda yardım almak için destek ekibine sağlayabileceğiniz benzersiz bir request_id da içerir. Aşağıdaki örnekte request_id ayıklanmaktadır.
ErrorDetails errorDetails = apiException.getErrorDetails();
if (errorDetails != null && errorDetails.getRequestInfo() != null) {
// Unique request identifier.
String requestId = errorDetails.getRequestInfo().getRequestId();
}
Kaynak adları oluşturma
İstemci kitaplığı, kimliklerden kaynak adları oluşturmak için yardımcı sınıflar sağlar.
import com.google.ads.admanager.v1.OrderName;
// ...
// Constructs a String in the format:
// "networks/{networkCode}/orders/{orderId}"
OrderName.of("123", "789");
Proxy ayarlarını yapılandırma
Java istemci kitaplığı, hem http.proxyHost hem de https.proxyHost sistem özelliği ayarlarına uyar. Bu ayarlar hakkında daha fazla bilgi için Java ağ iletişimi ve proxy'ler başlıklı makaleyi inceleyin.