NSURLSession এবং NSURLRequest এর মাধ্যমে Network Requests

Networking এবং Web APIs (নেটওয়ার্কিং এবং ওয়েব এপিআইস) - অবজেক্টিভ-সি (Objective-C) - Computer Programming

236

NSURLSession এবং NSURLRequest হল Objective-C তে networking বা নেটওয়ার্ক রিকোয়েস্ট পরিচালনার জন্য ব্যবহৃত দুটি গুরুত্বপূর্ণ ক্লাস। এই দুটি ক্লাসের মাধ্যমে আপনি HTTP বা HTTPS রিকোয়েস্ট পাঠিয়ে সার্ভার থেকে ডেটা নিয়ে আসতে পারেন এবং সেই ডেটাকে প্রক্রিয়া করতে পারেন। NSURLSession একটি আধুনিক API যা NSURLRequest এবং অন্যান্য নেটওয়ার্কিং কাজকে সহজ করে তোলে।

এই অংশে, আমরা NSURLSession এবং NSURLRequest এর মাধ্যমে network requests পাঠানোর মৌলিক ধারণা এবং উদাহরণ দেখব।


1. NSURLRequest

NSURLRequest একটি কনফিগারেশন অবজেক্ট যা আপনার নেটওয়ার্ক রিকোয়েস্টের প্যারামিটারগুলিকে সংজ্ঞায়িত করে। এটি HTTP/HTTPS রিকোয়েস্টে ব্যবহৃত হয় এবং আপনি কীভাবে নেটওয়ার্ক রিকোয়েস্ট পাঠাতে চান তা নির্ধারণ করতে সাহায্য করে (যেমন, GET, POST মেথড, HTTP হেডারস, টাইমআউট, ইত্যাদি)।

NSURLRequest এর সিনট্যাক্স:

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://example.com"]];
  • NSURLRequest: নেটওয়ার্ক রিকোয়েস্টের জন্য একধরনের অবজেক্ট, যা URL এবং অতিরিক্ত কনফিগারেশন ধারণ করে।

2. NSURLSession

NSURLSession হল একটি ক্লাস যা NSURLRequest ব্যবহার করে নেটওয়ার্ক রিকোয়েস্ট পাঠাতে এবং প্রাপ্ত ডেটা প্রক্রিয়া করতে ব্যবহৃত হয়। এটি অ্যাসিঙ্ক্রোনাস এবং সিঙ্ক্রোনাস রিকোয়েস্ট করার জন্য ব্যবহৃত হয় এবং আপনি রিকোয়েস্টের রেসপন্সের উপর ভিত্তি করে কাজ করতে পারেন। NSURLSession ব্লক-বেসড কলব্যাক (callback) মেথড প্রদান করে, যা নেটওয়ার্ক রিকোয়েস্টের প্রক্রিয়া সম্পন্ন হলে অবজেক্টে রিটার্ন করে।

NSURLSession এর সিনট্যাক্স:

NSURLSession *session = [NSURLSession sharedSession];
  • sharedSession: এটি একটি শেয়ার্ড সেশন, যা সাধারণত সাধারণ HTTP রিকোয়েস্টের জন্য ব্যবহৃত হয়। এটি ব্যবহার করা সুবিধাজনক।

NSURLSession Configuration:

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:nil delegateQueue:nil];
  • sessionWithConfiguration: কাস্টম সেশন কনফিগারেশন তৈরি করতে ব্যবহৃত হয়, যেখানে আপনি ডেটা ক্যাশিং, টাইমআউট সেটিংস, এবং অন্যান্য কনফিগারেশন নির্ধারণ করতে পারেন।

3. NSURLSession এবং NSURLRequest এর মাধ্যমে Network Request পাঠানোর উদাহরণ

এখন, চলুন দেখি কিভাবে NSURLSession এবং NSURLRequest ব্যবহার করে একটি HTTP GET রিকোয়েস্ট পাঠানো যায় এবং সার্ভারের রেসপন্স প্রাপ্ত করা যায়।

GET Request Example:

// NSURLRequest তৈরি
NSURL *url = [NSURL URLWithString:@"https://jsonplaceholder.typicode.com/posts"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];

// NSURLSession দিয়ে রিকোয়েস্ট পাঠানো
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    if (error) {
        NSLog(@"Error: %@", error.localizedDescription);
        return;
    }
    
    // রেসপন্স পাওয়া গেলে
    NSError *jsonError;
    NSArray *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
    
    if (jsonError) {
        NSLog(@"JSON Error: %@", jsonError.localizedDescription);
    } else {
        NSLog(@"Received JSON: %@", json);
    }
}];

// টাস্ক শুরু করা
[dataTask resume];

ব্যাখ্যা:

  • NSURLRequest: এখানে, আমরা https://jsonplaceholder.typicode.com/posts URL থেকে একটি GET রিকোয়েস্ট তৈরি করেছি।
  • NSURLSession: এটি রিকোয়েস্টের জন্য একটি সেশন তৈরি করেছে এবং dataTaskWithRequest মেথড ব্যবহার করে রিকোয়েস্ট পাঠিয়েছে।
  • completionHandler: এই ব্লকটি নেটওয়ার্ক রিকোয়েস্টের রেসপন্স পাওয়ার পর কল হয়। এখানে আমরা রেসপন্সের ডেটা পার্স করে JSON এ কনভার্ট করেছি এবং তা কনসোলে প্রিন্ট করেছি।

4. POST Request Example

এখন, একটি HTTP POST রিকোয়েস্ট পাঠানোর উদাহরণ দেখি।

// URL এবং রিকোয়েস্ট বডি তৈরি
NSURL *url = [NSURL URLWithString:@"https://jsonplaceholder.typicode.com/posts"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";  // HTTP মেথড সেট করা
NSString *jsonString = @"{\"title\": \"foo\", \"body\": \"bar\", \"userId\": 1}";
request.HTTPBody = [jsonString dataUsingEncoding:NSUTF8StringEncoding];  // JSON ডেটা শরীর হিসাবে পাঠানো

// হেডার যোগ করা (যদি প্রয়োজন হয়)
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

// NSURLSession দিয়ে POST রিকোয়েস্ট পাঠানো
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    if (error) {
        NSLog(@"Error: %@", error.localizedDescription);
        return;
    }

    // রেসপন্স পাওয়া গেলে
    NSError *jsonError;
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];

    if (jsonError) {
        NSLog(@"JSON Error: %@", jsonError.localizedDescription);
    } else {
        NSLog(@"Received Response: %@", json);
    }
}];

// টাস্ক শুরু করা
[dataTask resume];

ব্যাখ্যা:

  • NSMutableURLRequest: POST রিকোয়েস্ট পাঠাতে NSMutableURLRequest ব্যবহার করা হয়, যা আপনাকে রিকোয়েস্টের HTTPMethod এবং HTTPBody নির্ধারণ করতে সহায়তা করে।
  • HTTPMethod = @"POST": এখানে POST মেথড ব্যবহার করা হয়েছে।
  • request.HTTPBody: POST রিকোয়েস্টের শরীরে পাঠানো ডেটা JSON ফরম্যাটে কনভার্ট করা হয়েছে।
  • setValue:@"application/json" forHTTPHeaderField:@"Content-Type": রিকোয়েস্ট হেডারে Content-Type হিসাবে application/json সেট করা হয়েছে, যাতে সার্ভার জানে যে আপনি JSON ডেটা পাঠাচ্ছেন।

5. NSURLSession এর উন্নত ব্যবহার

Uploading Data (ব্যাকগ্রাউন্ডে ডেটা আপলোড)

এটি যখন বড় ফাইল আপলোড করতে হয় বা ব্যাকগ্রাউন্ডে লম্বা সময় ধরে কাজ করতে হয়, তখন NSURLSession এর ব্যাকগ্রাউন্ড কনফিগারেশন ব্যবহার করা হয়।

// ব্যাকগ্রাউন্ড সেশন কনফিগারেশন
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@"com.example.upload"];
NSURLSession *backgroundSession = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];

// আপলোড রিকোয়েস্ট তৈরি
NSURL *url = [NSURL URLWithString:@"https://example.com/upload"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";

// ফাইল ডেটা আপলোড
NSURLSessionUploadTask *uploadTask = [backgroundSession uploadTaskWithRequest:request fromFile:[NSURL fileURLWithPath:@"path/to/file"]];
[uploadTask resume];

এখানে, backgroundSession দিয়ে একটি ব্যাকগ্রাউন্ড কনফিগারেশন তৈরি করা হয়েছে যাতে ফাইল আপলোডের সময় অ্যাপ্লিকেশন ব্যাকগ্রাউন্ডে থাকলেও কাজ চলতে থাকে।


সারাংশ

  • NSURLRequest: এটি একটি অবজেক্ট যা নেটওয়ার্ক রিকোয়েস্ট তৈরি এবং কনফিগারেশন করতে ব্যবহৃত হয়। এটি URL, HTTP মেথড, হেডারস, টাইমআউট, ইত্যাদি ধারণ করে।
  • NSURLSession: এটি নেটওয়ার্ক রিকোয়েস্ট কার্যকর করার জন্য ব্যবহৃত হয়। এটি বিভিন্ন ধরনের অ্যাসিঙ্ক্রোনাস এবং সিঙ্ক্রোনাস টাস্ক পরিচালনা করতে সাহায্য করে।
  • GET, POST, PUT, DELETE: HTTP মেথডগুলির মাধ্যমে বিভিন্ন ধরনের রিকোয়েস্ট সার্ভারে পাঠানো হয় এবং রেসপন্স পাওয়া যায়।

NSURLSession এবং NSURLRequest Objective-C তে HTTP রিকোয়েস্ট পাঠানোর একটি শক্ত

িশালী উপায়, যা অ্যাসিঙ্ক্রোনাস এবং ব্যাকগ্রাউন্ড কার্যক্রমের জন্য কার্যকরী।

Content added By
Promotion

Are you sure to start over?

Loading...