Gson এর সঙ্গে Retrofit Integration (API Call এর জন্য)

Gson এর সাথে অন্যান্য লাইব্রেরির Integration - জিসন (Gson) - Java Technologies

342

Retrofit হলো একটি Type-safe HTTP ক্লায়েন্ট, যা Android এবং Java এ RESTful API-এর সাথে যোগাযোগ করতে ব্যবহৃত হয়। Gson-এর সাথে Retrofit একত্রে ব্যবহার করলে আপনি JSON ডেটাকে সহজে Java অবজেক্টে রূপান্তর করতে পারেন এবং JSON ডেটাকে API রিকোয়েস্ট বা রেসপন্স হিসেবে প্রেরণ ও গ্রহণ করতে পারেন।

এখানে আমরা Gson এবং Retrofit ব্যবহার করে API কল করার একটি উদাহরণ দেখব, যেখানে JSON ডেটা অ্যাপ্লিকেশন থেকে API এর মাধ্যমে পাঠানো এবং প্রাপ্ত হবে।


1. Retrofit এবং Gson এর ডিপেনডেন্সি

Retrofit এবং Gson এর সাথে কাজ করার জন্য প্রথমে আপনাকে আপনার প্রকল্পে কিছু লাইব্রেরি যোগ করতে হবে।

Maven Dependency:

<dependency>
    <groupId>com.squareup.retrofit2</groupId>
    <artifactId>retrofit</artifactId>
    <version>2.9.0</version>
</dependency>

<dependency>
    <groupId>com.squareup.retrofit2</groupId>
    <artifactId>converter-gson</artifactId>
    <version>2.9.0</version>
</dependency>

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.9</version>
</dependency>

Gradle Dependency:

implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.google.code.gson:gson:2.8.9'

2. Gson এবং Retrofit এর সাথে API কল

ধরা যাক আমাদের একটি User নামের REST API আছে যা JSON ফর্ম্যাটে ডেটা রিটার্ন করবে।

API Response Structure (JSON):

{
  "id": 1,
  "name": "John Doe",
  "email": "johndoe@example.com"
}

Step-by-Step Retrofit Integration:

  1. Step 1: API Endpoint Interface তৈরি
    প্রথমে, আপনাকে একটি interface তৈরি করতে হবে যেখানে API রিকোয়েস্টগুলি এবং তাদের রেসপন্স মেথডগুলি থাকবে।
import retrofit2.Call;
import retrofit2.http.GET;

public interface ApiService {
    // HTTP GET রিকোয়েস্ট, এখানে "user" একটি API endpoint
    @GET("user")
    Call<User> getUser();
}
  1. Step 2: User Class তৈরি (POJO Class)
    এবার, User ক্লাস তৈরি করতে হবে, যা JSON রেসপন্স থেকে ডেটা ধারণ করবে।
public class User {
    private int id;
    private String name;
    private String email;

    // Getter methods
    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public String getEmail() {
        return email;
    }
}
  1. Step 3: Retrofit Configuration (Gson Converter সেটআপ)
    Gson কনভার্টার ব্যবহার করে, আপনি JSON ডেটাকে Java অবজেক্টে কনভার্ট করবেন।
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class RetrofitClient {
    private static Retrofit retrofit;
    private static final String BASE_URL = "https://yourapiurl.com/";

    // Retrofit instance তৈরি এবং Gson কনভার্টার সেট করা
    public static Retrofit getRetrofitInstance() {
        if (retrofit == null) {
            Gson gson = new GsonBuilder().setLenient().create(); // Optional: For lenient parsing of JSON
            retrofit = new Retrofit.Builder()
                    .baseUrl(BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .build();
        }
        return retrofit;
    }
}
  1. Step 4: API Call
    এবার Retrofit এর মাধ্যমে API কল করা এবং রেসপন্স পদ্ধতি (callback) নির্ধারণ করা।
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class Main {
    public static void main(String[] args) {
        // Retrofit instance তৈরি
        ApiService apiService = RetrofitClient.getRetrofitInstance().create(ApiService.class);

        // API কল শুরু
        Call<User> call = apiService.getUser();

        // Asynchronous API কল
        call.enqueue(new Callback<User>() {
            @Override
            public void onResponse(Call<User> call, Response<User> response) {
                if (response.isSuccessful()) {
                    // JSON থেকে User অবজেক্টে ডেটা রূপান্তরিত
                    User user = response.body();
                    System.out.println("User ID: " + user.getId());
                    System.out.println("User Name: " + user.getName());
                    System.out.println("User Email: " + user.getEmail());
                } else {
                    System.out.println("Request failed with code: " + response.code());
                }
            }

            @Override
            public void onFailure(Call<User> call, Throwable t) {
                // API কল ব্যর্থ হলে error handling
                t.printStackTrace();
            }
        });
    }
}

3. Synchronous API Call

এছাড়া, আপনি Synchronous কলও করতে পারেন, যেখানে আপনি API কলের রেসপন্সের জন্য ব্লকিং অপারেশন ব্যবহার করবেন। তবে এটি মূলত Asynchronous API কলের চেয়ে কম ব্যবহৃত, কারণ এটি UI থ্রেডে ব্লকিং ঘটাতে পারে, যা Android অ্যাপ্লিকেশনে পারফরম্যান্স ইস্যু তৈরি করতে পারে।

public class Main {
    public static void main(String[] args) {
        // Retrofit instance তৈরি
        ApiService apiService = RetrofitClient.getRetrofitInstance().create(ApiService.class);

        // Synchronous API call
        try {
            Response<User> response = apiService.getUser().execute(); // execute() সিঙ্ক্রোনাস কলের জন্য
            if (response.isSuccessful()) {
                User user = response.body();
                System.out.println("User ID: " + user.getId());
                System.out.println("User Name: " + user.getName());
                System.out.println("User Email: " + user.getEmail());
            } else {
                System.out.println("Request failed with code: " + response.code());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4. Error Handling

Retrofit তে error handling করতে হলে onFailure() এবং onResponse() মেথডে যথাযথ যাচাই করতে হবে, যেমন:

  • HTTP errors (4xx, 5xx)
  • Connection errors (e.g., no internet connection)
  • Timeouts

আপনি এরকমও করতে পারেন:

@Override
public void onResponse(Call<User> call, Response<User> response) {
    if (response.isSuccessful()) {
        User user = response.body();
        System.out.println("User Name: " + user.getName());
    } else {
        // API Call-এ error code থাকলে তা handle করুন
        System.out.println("Error: " + response.errorBody());
    }
}

@Override
public void onFailure(Call<User> call, Throwable t) {
    // Connection অথবা অন্যান্য error-handling
    System.out.println("Failed to connect: " + t.getMessage());
}

Retrofit এবং Gson একত্রে ব্যবহার করলে আপনি সহজে API রিকোয়েস্ট এবং রেসপন্স হ্যান্ডলিং করতে পারবেন, এবং JSON ডেটাকে Java অবজেক্টে রূপান্তর করতে পারবেন। এখানে আমরা দেখলাম কিভাবে Retrofit এর মাধ্যমে GET রিকোয়েস্ট করা যায়, Gson দিয়ে JSON ডেটা ম্যানিপুলেট করা যায় এবং কিভাবে Asynchronous এবং Synchronous API কল করতে হয়।

Content added By
Promotion

Are you sure to start over?

Loading...