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

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

iOS網(wǎng)絡(luò)-03-NSURLSession與NSURLSessionTask

2019-11-14 18:29:04
字體:
供稿:網(wǎng)友

簡介


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

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

NSURLSession


  • NSURLSession對象的獲取方法

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

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

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

NSURLSessionTask


  • 常用的屬性

    • taskIdentifier(NSUInteger, readonly),任務(wù)標(biāo)識,唯一確定一個任務(wù)
    • originalRequest(NSURLRequest *, readonly),上一個請求對象
    • currentRequest(NSURLRequest *, readonly),當(dāng)前請求對象
    • 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),錯誤信息
    • PRiority(float),任務(wù)的優(yōu)先級
  • 常用的方法(任務(wù)的狀態(tài)控制)

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

    • NSURLSessionTaskPriorityDefault
    • NSURLSessionTaskPriorityLow
    • NSURLSessionTaskPriorityHigh
  • NSURLSessionTask

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

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

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


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

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

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

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

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

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

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

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

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

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

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


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

    • 獲取NSURLSession對象

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

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

      [task resume];
  • 代理的方式

    • 獲得NSURLSession對象

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

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

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 东丽区| 榆树市| 武隆县| 金溪县| 多伦县| 山阳县| 青龙| 米林县| 永泰县| 共和县| 张家川| 沁水县| 喀什市| 竹北市| 左贡县| 乌恰县| 湘潭市| 温宿县| 永康市| 山东| 乐东| 绥棱县| 万载县| 观塘区| 五寨县| 吴江市| 平度市| 聂拉木县| 朝阳县| 肇州县| 清河县| 昌吉市| 郎溪县| 瓦房店市| 达拉特旗| 赫章县| 塔城市| 华坪县| 庄浪县| 衡水市| 石泉县|