中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

學習使用NSURLSession

2018-07-20    來源:編程學習網(wǎng)

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

在iOS7中,蘋果介紹了新的API —— NSURLSession,這一系列的API是用來替代NSURLConnection的。

 
NSURLSession帶來了這些新的好處:
  • 后臺上傳和下載
  • 可以暫停和繼續(xù)連接網(wǎng)絡
  • 保存配置
  • 子類化和私有存儲
  • 改良的認證處理
  • 豐富的代理模型
  • 通過文件系統(tǒng)上傳和下載
作為一個iOS初學者的我,就不理NSURLConnection了,直接上NSURLSession
 
 
NSURLSession的架構也很簡單,NSURLSession本身就是一個統(tǒng)領,然后帶著一個右將軍NSURLSessionConfiguration,他是負責NSURLSession的各種配置的,然后還有一個左將軍,他負責代理,也就是隨時跟進老大的狀態(tài),然后到某個狀態(tài)點的時候進行響應。最后就是一堆NSURLSessionTask小兵,他們負責完成實際的任務。
 
 
而NSURLSessionTask小兵其實也是個泛指,它實際上有分幾個兵種:
  • NSURLSessionDataTask:普通的數(shù)據(jù)傳輸,拿到的數(shù)據(jù)是NSData格式,你可以根據(jù)數(shù)據(jù)原本的格式進行相應的轉換。
  • NSURLSessionUploadTask:用于上傳到網(wǎng)上的
  • NSURLSessionDownloadTask:用于下載,這個類與其它兩個類有點不一樣,這個類下載到的東西是直接寫在一個臨時文件中的,下載好之后它會給你一個臨時文件的指針,然后自己手動保存。
 
好,我們直接來著手開始實踐,下面我們來請求一個比特幣行情的API來獲取他們的數(shù)據(jù)。
新建一個項目,選擇Single View Application,然后在ViewController.m里添加以下代碼:
 

 1 - (id)initWithCoder:(NSCoder *)aDecoder  2 {  3 self = [super initWithCoder:aDecoder];  4 NSLog(@"hello initWithCoder");  5 //1  6 NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://www.okcoin.com/api/ticker.do"]];  7 //2  8 NSURLSession *session = [NSURLSession sharedSession];  9 //3 10 NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 11 if (!error) { 12 //4 13 NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; 14 //5 15 if (httpResponse.statusCode == 200) { 16 //6 17 NSString *string = [[NSString alloc] initWithData:data encoding:NSStringEncodingConversionAllowLossy]; 18 NSLog(@"%@",string); 19  } 20  } 21  }]; 22 //7 23  [dataTask resume]; 24 25 return self; 26 }

1、將URL打包成request

2、創(chuàng)建session,調用sharedSession表示使用默認配置來創(chuàng)建session
3、小兵出馬,小兵NSURLSessionDataTask是直接從session里創(chuàng)建出來的,等于session調用dataTaskWithRequest方法來完成這個網(wǎng)絡任務。傳入request,再寫一個block好讓數(shù)據(jù)下載好的時候可以直接處理數(shù)據(jù)。block里面有三個參數(shù),data就是你要獲取的數(shù)據(jù),response返回一些網(wǎng)絡響應的信息,error可以處理錯誤。
4、將response的類型轉換為NSHTTPURLResponse,才能拿到status code
5、當statusCode等于200時,表示網(wǎng)絡沒問題
6、處理一下數(shù)據(jù),把它打印到終端
7、當然,最重要的是,完成以上步驟時,不要忘記調用這個resume來開始下載。

由于storyboard會自己調用initWithCoder:這個方法,所以我們直接把代碼寫在這個方法里。
運行程序,就可以看到終端上顯示
 
2014-01-01 11:45:55.256 LearnNSURLSession[829:541b] {"ticker":{"buy":"4376.99","high":"4388.02","last":"4376.99","low":"4246.0","sell":"4377.0","vol":"3874.2808"}}
 
OK,返回的是正確的數(shù)據(jù)。
 
當然,上面代碼為了省事,沒用NSURLSessionConfiguration,其實可以把
NSURLSession *session = [NSURLSession sharedSession];

 

這一行代碼換成    
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];

 

NSURLSessionConfiguration就是這樣用的,當然,這個小程序暫時還用不著設置其他配置。
 
不過很有必要介紹一下NSURLSessionConfiguration的三個基本配置:
  • backgroundSessionConfiguration: —— 這個可以讓你在后臺進行下載,還有使用網(wǎng)絡推送通知。
  • defaultSessionConfiguration  —— 這個是默認的配置,默認使用cache,cookie和credential等。
  • ephemeralSessionConfiguration —— 不使用cache,cookie和credential等。
 

標簽: 代碼 網(wǎng)絡

版權申明:本站文章部分自網(wǎng)絡,如有侵權,請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:PHP新手告訴你應該如何學習編程

下一篇:JAVA中的糕富帥技術——反射(一)