Google, Ad Manager API के साथ इंटरैक्ट करने के लिए Java क्लाइंट लाइब्रेरी उपलब्ध कराता है. हमारा सुझाव है कि Apache Maven या Gradle के साथ क्लाइंट लाइब्रेरी का इस्तेमाल करें.
शुरू करने के लिए, अपनी पसंद के IDE में एक नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट में डिपेंडेंसी जोड़ें. Google, क्लाइंट लाइब्रेरी के आर्टफ़ैक्ट को Maven Central Repository में 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>
ग्रेडल
implementation 'com.google.api-ads:ad-manager:0.56.0'
क्रेडेंशियल कॉन्फ़िगर करना
Java क्लाइंट लाइब्रेरी, पुष्टि करने के लिए OAuth2 और ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल (एडीसी) का इस्तेमाल करती है.
ADC, क्रेडेंशियल को इन जगहों पर क्रम से खोजता है:
GOOGLE_APPLICATION_CREDENTIALSएनवायरमेंट वैरिएबल.- Google Cloud CLI (gcloud CLI) के ज़रिए सेट अप किए गए उपयोगकर्ता क्रेडेंशियल.
- Google Cloud पर चलने पर, Google Cloud संसाधन से जुड़ा सेवा खाता.
एडीसी क्रेडेंशियल बनाने और कॉन्फ़िगर करने के लिए, Authentication देखें.
पहला अनुरोध करना
हर सेवा में एक 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 देखें.
एचटीटीपी अनुरोधों और जवाबों को लॉग करना
com.google.api.client.http.HttpTransport क्लास, सभी एचटीटीपी अनुरोध करती है.
यह क्लास, एचटीटीपी अनुरोध और जवाब की जानकारी को लॉग करने के लिए java.util.logging (JUL) का इस्तेमाल करती है. इसमें यूआरएल, हेडर, और कॉन्टेंट शामिल है.
लॉगिंग चालू करने के लिए, इस क्लास के लिए लॉगर को CONFIG या इससे ज़्यादा के लॉग लेवल पर सेट करें. लॉगिंग लागू करने के तरीके के हिसाब से, यह तरीका अलग-अलग होता है.
जुलाई
लॉगिंग चालू करने के लिए, अपनी 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 का इस्तेमाल किया जाता है, तो JUL मैसेज लॉग करने के लिए Log4j JDK Logging Adapter का इस्तेमाल किया जा सकता है. इसे 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 के लॉग को 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 से जुड़ी सभी गड़बड़ियां, Java क्लाइंट लाइब्रेरी में ApiException की सबक्लास होती हैं.
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 नेटवर्किंग और प्रॉक्सी देखें.