国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

OC-15.NSURLSession與NSURLSessionTask

2019-11-14 17:59:10
字體:
供稿:網(wǎng)友

簡(jiǎn)介


  • NSURLsession也能完成網(wǎng)絡(luò)請(qǐng)求
  • NSURLConnection在iOS9中不推薦使用,NSURLSession是iOS9中推薦使用的網(wǎng)絡(luò)請(qǐng)求方式
  • NSURLSession需要與NSURLSessionTask配合使用
  • NSURLSession的簡(jiǎn)單使用步驟

    • 創(chuàng)建請(qǐng)求任務(wù)
    • 執(zhí)行請(qǐng)求任務(wù)
  • 通常使用NSURLSessionTask的子類來創(chuàng)建任務(wù)

NSURLSession


  • NSURLSession對(duì)象的獲取方法

    • 獲取全局的NSURLSession對(duì)象(無法設(shè)置代理

      + (NSURLSession *)sharedSession
    • 通過NSURLSessionConfiguration獲取(可以設(shè)置代理),NSURLSessionConfiguration類通常用來設(shè)置一些請(qǐng)求參數(shù)

      + (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration delegate:(nullable id <NSURLSessionDelegate>)delegate delegateQueue:(nullable NSOperationQueue *)queue

NSURLSessionTask


  • 常用的屬性

    • taskIdentifier(NSUInteger, readonly),任務(wù)標(biāo)識(shí),唯一確定一個(gè)任務(wù)
    • originalRequest(NSURLRequest *, readonly),上一個(gè)請(qǐng)求對(duì)象
    • currentRequest(NSURLRequest *, readonly),當(dāng)前請(qǐng)求對(duì)象
    • response(NSURLResponse *, readonly),服務(wù)器的響應(yīng)數(shù)據(jù)
    • countOfBytesReceived(int64_t, readonly),已經(jīng)接收到的數(shù)據(jù)量
    • countOfBytesExpectedToReceive(int64_t, readonly),所要接收到的總數(shù)據(jù)量
    • countOfBytesSent(int64_t, readonly),已經(jīng)發(fā)送的數(shù)據(jù)量
    • countOfBytesExpectedToSend(int64_t, readonly),所要發(fā)送的總數(shù)據(jù)量
    • taskDescription(NSString *),任務(wù)描述
    • state(NSURLSessionTaskState, readonly),任務(wù)的狀態(tài)
    • error(NSError *, readonly),錯(cuò)誤信息
    • PRiority(float),任務(wù)的優(yōu)先級(jí)
  • 常用的方法(任務(wù)的狀態(tài)控制)

    • - (void)cancel,取消任務(wù)
    • - (void)suspend,暫停任務(wù)
    • - (void)resume,繼續(xù)任務(wù)
  • 任務(wù)優(yōu)先級(jí)屬性priority的取值

    • NSURLSessionTaskPriorityDefault
    • NSURLSessionTaskPriorityLow
    • NSURLSessionTaskPriorityHigh
  • NSURLSessionTask

    • NSURLSessionDataTask,該子類沒有擴(kuò)充屬性和方法,只是為了與NSURLSessionUploadTask和NSURLSessionDownloadTask區(qū)分
    • NSURLSessionUploadTask,用于上傳任務(wù)
    • NSURLSessionDownloadTask,提供了一個(gè)取消任務(wù)的方法,但是會(huì)保存用于以后繼續(xù)任務(wù)的信息,方法如下:

      - (void)cancelByProducingResumeData:(void (^)(NSData * __nullable resumeData))completionHandler;

與NSURLSession相關(guān)的代理協(xié)議


  • NSURLSessionDelegate
  • NSURLSessionTaskDelegate,遵守NSURLSessionDelegate協(xié)議
  • NSURLSessionDataDelegate,遵守NSURLSessionTaskDelegate協(xié)議,是網(wǎng)絡(luò)請(qǐng)求通常遵循的協(xié)議,常用的方法:

    • 接受到服務(wù)響應(yīng)時(shí)調(diào)用的方法

      - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler;/*** 必須在該方法中對(duì)服務(wù)器的響應(yīng)進(jìn)行授權(quán),才能繼續(xù)接收服務(wù)器返回的數(shù)據(jù),調(diào)用如下函數(shù)* completionHandler(NSURLSessionResponseAllow)*/
    • 接收到服務(wù)器返回的數(shù)據(jù)時(shí)調(diào)用的方法

      - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data/*** data:服務(wù)返回的數(shù)據(jù),通常為JSON格式數(shù)據(jù)*/
    • 請(qǐng)求完成時(shí)調(diào)用的方法(成功或失?。?/p>

      - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(nullable NSError *)error/*** 若出現(xiàn)錯(cuò)誤,error中存放錯(cuò)誤信息*/
  • NSURLSessionDownloadDelegate(通常用于下載大量數(shù)據(jù)),遵守NSURLSessionTaskDelegate協(xié)議,常用的方法:

    • 寫入數(shù)據(jù)到臨時(shí)文件時(shí)調(diào)用的方法(服務(wù)器返回一點(diǎn)就寫入一點(diǎn))

      - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite/*** totalBytesWritten,已寫入數(shù)據(jù)的總長(zhǎng)度* totalBytesExpectedToWrite:總共要寫入數(shù)據(jù)的總長(zhǎng)度* 可以在該方法中計(jì)算下載進(jìn)度*/
    • 遇到錯(cuò)誤的時(shí)候調(diào)用

      - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error/***error:若遇到錯(cuò)誤,則保存錯(cuò)誤信息*/
    • 用于斷點(diǎn)下載的方法

      - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes/*** fileOffset:繼續(xù)下載時(shí),文件的開始位置* expectedTotalBytes:剩余的數(shù)據(jù)總數(shù)*/
    • 下載完成時(shí)調(diào)用的方法

      - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location/*** location:下載的文件保存的臨時(shí)位置* 需要將下載的文件保存在可以長(zhǎng)期保存的位置*/

NSURLSession網(wǎng)絡(luò)請(qǐng)求


  • Block回調(diào)的方式

    • 獲取NSURLSession對(duì)象

      NSURLSession *session =[NSURLSession sharedSession];
    • 創(chuàng)建請(qǐng)求任務(wù)

      NSURLSessionTask *task = [session downloadTaskWithURL:(此處為請(qǐng)求的URL路徑) completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {	//此處為請(qǐng)求任務(wù)完成后的回調(diào)Block,即:任務(wù)完成后會(huì)執(zhí)行這里的代碼	}];
    • 啟動(dòng)任務(wù)

      [task resume];
  • 代理的方式

    • 獲得NSURLSession對(duì)象

      NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc] init]];
    • 創(chuàng)建請(qǐng)求任務(wù)

      NSURLSessionTask *task = [session dataTaskWithRequest:(此處為NSURLRequest對(duì)象)];
    • 啟動(dòng)任務(wù)

      [task resume];
    • 實(shí)現(xiàn)代理方法做進(jìn)一步處理


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 墨竹工卡县| 栾川县| 嘉义市| 田东县| 全椒县| 黄山市| 百色市| 高尔夫| 丹东市| 财经| 黄龙县| 南江县| 巢湖市| 克东县| 张家港市| 九龙城区| 道孚县| 大田县| 衡南县| 枞阳县| 洪湖市| 建昌县| 乐清市| 江西省| 资溪县| 玛曲县| 任丘市| 盖州市| 库车县| 资阳市| 高安市| 宁河县| 会宁县| 化德县| 西吉县| 高平市| 乐都县| 嘉黎县| 合江县| 黄梅县| 凌海市|