Java

গুগল অ্যাড ম্যানেজার এপিআই (Ad Manager API)-এর সাথে যোগাযোগের জন্য একটি জাভা ক্লায়েন্ট লাইব্রেরি প্রদান করে। আমরা অ্যাপাচি মেভেন (Apache Maven) বা গ্র্যাডল (Gradle)-এর সাথে এই ক্লায়েন্ট লাইব্রেরিটি ব্যবহার করার পরামর্শ দিই।

শুরু করার জন্য, আপনার পছন্দের IDE-তে একটি নতুন প্রজেক্ট তৈরি করুন অথবা একটি বিদ্যমান প্রজেক্টে ডিপেন্ডেন্সিটি যোগ করুন। গুগল ক্লায়েন্ট লাইব্রেরি আর্টিফ্যাক্টগুলো Maven সেন্ট্রাল রিপোজিটরি com.google.api-ads/ad-manager এ প্রকাশ করে।

ম্যাভেন

<!-- 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'

পরিচয়পত্র কনফিগার করুন

জাভা ক্লায়েন্ট লাইব্রেরিটি প্রমাণীকরণের জন্য OAuth2 এবং অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়ালস (ADC) ব্যবহার করে।

ADC নিম্নলিখিত স্থানগুলিতে ক্রমানুসারে ক্রেডেনশিয়াল অনুসন্ধান করে:

  1. GOOGLE_APPLICATION_CREDENTIALS এনভায়রনমেন্ট ভেরিয়েবল।
  2. Google Cloud CLI (gcloud CLI)-এর মাধ্যমে ব্যবহারকারীর পরিচয়পত্র সেট আপ করা হয়েছে।
  3. গুগল ক্লাউডে চালানোর সময়, পরিষেবা অ্যাকাউন্টটি গুগল ক্লাউড রিসোর্সের সাথে সংযুক্ত থাকে।

আপনার 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);
    }
  }
}

অন্যান্য পদ্ধতি ও রিসোর্সের উদাহরণের জন্য, googleapis/google-cloud-java গিটহাব রিপোজিটরিটি দেখুন।

HTTP অনুরোধ এবং প্রতিক্রিয়া লগ করুন

com.google.api.client.http.HttpTransport ক্লাসটি সমস্ত HTTP অনুরোধ সম্পন্ন করে। এই ক্লাসটি URL, হেডার এবং কন্টেন্ট সহ HTTP অনুরোধ ও প্রতিক্রিয়ার বিস্তারিত তথ্য লগ করার জন্য 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

বিকল্পভাবে, আপনি আপনার জাভা কোডে লগিং চালু করতে পারেন।


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 ব্যবহার করেন, তাহলে JUL মেসেজ লগ করার জন্য Log4j JDK লগিং অ্যাডাপ্টার ব্যবহার করতে পারেন। এটি একটি 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 বা তার চেয়ে উচ্চতর লেভেলের যেকোনো Logger-এ লিখে রাখে। নিচের উদাহরণ 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>

ত্রুটিগুলি পরিচালনা করুন

জাভা ক্লায়েন্ট লাইব্রেরিতে সমস্ত অ্যাড ম্যানেজার এপিআই ত্রুটিগুলি ApiException- এর উপশ্রেণী।

ApiException.getReason() মেথডটি একটি স্ট্রিং রিটার্ন করে যা ত্রুটির ধরণকে অনন্যভাবে শনাক্ত করে। ত্রুটিটি কীভাবে পরিচালনা করতে হবে তা নির্ধারণ করতে এটি ব্যবহার করুন।

404 Not Found এবং 401 Unauthorized ছাড়া বাকি সব এররে অতিরিক্ত তথ্যসহ ErrorDetails থাকে। 400 Bad Request এররের ক্ষেত্রে, ErrorDetails FieldViolations এর একটি তালিকা সহ একটি BadRequest অবজেক্ট থাকে।

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();
    }
  }
}

অ্যাড ম্যানেজার এপিআই ত্রুটিগুলোতে একটি অনন্য 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");

প্রক্সি সেটিংস কনফিগার করুন

জাভা ক্লায়েন্ট লাইব্রেরি http.proxyHost এবং https.proxyHost উভয় সিস্টেম প্রপার্টি সেটিংস মেনে চলে। এই সেটিংস সম্পর্কে আরও বিস্তারিত জানতে, জাভা নেটওয়ার্কিং এবং প্রক্সি দেখুন।