2017年4月2日日曜日

http requestをNSURLSessionのdelegateで

NRURLSessionでhttp requestの結果をdelegateで受けてみます。

//
//  ViewController.swift
//

import UIKit

class ViewController: UIViewController, NSURLSessionDelegate, NSURLSessionDataDelegate {

    @IBOutlet weak var urlDataDisp: UITextView!
   
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
       
        getUrlData("http://tantan2014.blogspot.jp/2017/01/mapkit-viewannotation.html")
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    func getUrlData(targetUri: String){
        // 通信用のConfigを生成.
        let config: NSURLSessionConfiguration = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier("backgroundTask")
        // Sessionを生成.
        let session: NSURLSession = NSURLSession(configuration: config, delegate: self, delegateQueue: nil)
        // 通信先のURLを生成.
        let url: NSURL = NSURL(string: targetUri as String)!
        // タスクの生成.
        let task: NSURLSessionDataTask = session.dataTaskWithURL(url)
        // タスクの実行.
        task.resume()
    }
   
    /*
     通信が終了したときに呼び出されるデリゲート.
     */
    func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveData data: NSData) {
        print("NSURLSessionDataTask")
       
        // 帰ってきたデータを文字列に変換.
        let getData: NSString = NSString(data: data, encoding: NSUTF8StringEncoding)!
       
        // バックグラウンドだとUIの処理が出来ないので、メインスレッドでUIの処理を行わせる.
        dispatch_async(dispatch_get_main_queue(), {
            self.urlDataDisp.text = getData as String
        })
    }
   
    /*
    
     バックグラウンドからフォアグラウンドの復帰時に呼び出されるデリゲート.
    
     */
    func URLSessionDidFinishEventsForBackgroundURLSession(session: NSURLSession) {
       
        print("URLSessionDidFinishEventsForBackgroundURLSession")
       
    }
}



ご説明はこちらが詳しいです。
http://qiita.com/aKentaKoyama/items/96a979ab3a140e7b39ec

0 件のコメント:

コメントを投稿