আইওএস HTTP রিকোয়েস্ট

আমরা যেসব অ্যাপ তৈরি করি বা করব, তার বেশির ভাগই নেটওয়ার্ক রিলেটেড। কোন ওয়েব সাইট/ নেটওয়ার্ক থেকে কিছু ডেটা রিসিভ করতে হয়, নেটওয়ার্ক এ কিছু ডেটা পাঠাতে হয় ইত্যাদি। এগুলোকে সাধারণত HTTP রিকোয়েস্ট বলে।

আমরা দেখব কিভাবে iOS এ একটা সিম্পল HTTP রিকোয়েস্ট করা যায়। এর জন্য আমরা একটা ইমেজ url থেকে লোড করব। এবং পরে তা একটা ইমেজ ভিউতে দেখাবো।

একটা প্রজেক্ট তৈরি করে নিব প্রথমে। এরপর Main storyboard এ একটা ইমেজ ভিউ যুক্ত করব। ইমেজ ভিউটি আমরা ViewController এর সাথে যুক্ত করব। ধরি ইমেজ ভিউটির নাম দিলাম imageView.

এরপর নেটওয়ার্ক থেকে ইমেজটি রিকোয়েস্ট করে লোড করব। তার জন্য আমাদের সম্পুর্ণ ViewController.swift ফাইলঃ

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var imageView: UIImageView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let imageURL = NSURL(string: "https://upload.wikimedia.org/wikipedia/commons/thumb/3/38/M_Rainier.jpg/450px-M_Rainier.jpg")!
        
        
        let task = NSURLSession.sharedSession().dataTaskWithURL(imageURL)  {
            
            (data, response, error) in
            
            if error == nil {
                let downloadedImage = UIImage(data: data!)
                
                dispatch_async(dispatch_get_main_queue()) {
                   self.imageView.image = downloadedImage
                
                } // end Async
                
            } // end if
            
        }// end task
        
        task.resume()
        
    }

}

এখানে আমরা একটি ভ্যারিয়েবল নিয়েছি, imageURL নামে। যে ইমেজটি আমরা লোড করব, তা এখানে দিয়েছি।

আমরা একটি ইমেজ ডাউনলোড করব, আর তা করেছি NSURLSession দিয়ে। এরপর আমরা চেক করেছি ডেটা রিসিভ করতে কোন সমস্যা হয়েছে কিনা। যদি কোন ইরর না থাকে, তাহলে আমরা ডেটা বা আমাদের ইমেজটি ইমেজ ভিউতে দেখিয়েছি self.imageView.image = downloadedImage দিয়ে।

এখানে আমরা যখন NSURLSession দিয়ে একটা রিকোয়েস্ট পাঠিয়েছি, তা কাজ করেছে ব্যাকগ্রাউন্ডে। ব্যাকগ্রাউন্ড থেকে আবার মেইন থ্রেড এক্সেস করার জন্য একটা মেথড লাগে। dispatch_async নামে। আর dispatch_async থেকে আমরা আমাদের লোড করা ইমেজ ইমেজ ভিউতে লোড করেছি।

আমরা যদি লক্ষ্য করি, তাহলে দেখোতে পাবো আমরা একটা https বা সিকিউর url থেকে ইমেজ লোড করেছি। non secure বা http url থেকে কোন ইমেজ লোড করতে চাইলে লোড হবে না। iOS এ ডিফল্ট অফশনে http থেকে কোন ডেটা লোড করতে দেয় না। আমরা non secure url থেকে কোড ডেটা লোড করতে চাইলে তার জন্য আমাদের Transport Security Settings পরিবর্তন করতে হবে। তা নিয়ে বিস্তারিত লিখেছি আইওএস এ Transport Security Settings এ। ঐখান থেকে দেখে এবার non secure url বা http url থেকে একটা ইমেজ লোড করার ট্রাই করতে পারেন।

Leave a Reply