Ad Manager API-এর সাথে ইন্টার্যাক্ট করার জন্য Google একটি Java ক্লায়েন্ট লাইব্রেরি প্রদান করে। আমরা 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.59.0</version>
</dependency>
Gradle
implementation 'com.google.api-ads:ad-manager:0.59.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) ব্যবহার করে URL, হেডার ও কন্টেন্ট সহ HTTP অনুরোধ ও উত্তরের বিবরণ লগ করে।
লগিং চালু করতে, এই ক্লাসের জন্য লগারকে 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 Bridge Handler
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>
সমস্যা ম্যানেজ করা
Java ক্লায়েন্ট লাইব্রেরিতে সব Ad Manager API সংক্রান্ত সমস্যা হল 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 নেটওয়ার্কিং ও প্রক্সি দেখুন।