NSURLSession下載檔案-代理

來源:互聯網
上載者:User

標籤:lang   sources   delegate   代理   ons   images   response   conf   min   

(1)建立NSURLSession對象,設定代理(預設配置)

 //1.建立NSURLSession,並設定代理    /*     第一個參數:session對象的全域配置設定,一般使用預設配置就可以     第二個參數:誰成為session對象的代理     第三個參數:代理方法在哪個隊列中執行(在哪個線程中調用),如果是主隊列那麼在主線程中執行,如果是非主隊列,那麼在子線程中執行     */    NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[NSOperationQueue mainQueue]];

(2)根據Session對象建立一個NSURLSessionDataTask任務(post和get選擇)

//建立taskNSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/resources/images/minion_01.png"];//注意:如果要發送POST請求,那麼請使用dataTaskWithRequest,設定一些要求標頭資訊NSURLSessionDataTask *dataTask = [session dataTaskWithURL:url];

(3)執行任務(其它方法,如暫停、取消等)

    //啟動task    //[dataTask resume];    //其它方法,如取消任務,暫停任務等    //[dataTask cancel];    //[dataTask suspend];

(4)遵守代理協議,實現代理方法(3個相關的代理方法)

/* 1.當接收到伺服器響應的時候調用     session:發送請求的session對象     dataTask:根據NSURLSession建立的task任務     response:伺服器響應資訊(回應標頭)     completionHandler:通過該block回調,告訴伺服器端是否接收返回的資料 */-(void)URLSession:(nonnull NSURLSession *)session dataTask:(nonnull NSURLSessionDataTask *)dataTask didReceiveResponse:(nonnull NSURLResponse *)response completionHandler:(nonnull void (^)(NSURLSessionResponseDisposition))completionHandler/* 2.當接收到伺服器返回的資料時調用 該方法可能會被調用多次 */-(void)URLSession:(nonnull NSURLSession *)session dataTask:(nonnull NSURLSessionDataTask *)dataTask didReceiveData:(nonnull NSData *)data/* 3.當請求完成之後調用該方法 不論是請求成功還是請求失敗都調用該方法,如果請求失敗,那麼error對象有值,否則那麼error對象為空白 */-(void)URLSession:(nonnull NSURLSession *)session task:(nonnull NSURLSessionTask *)task didCompleteWithError:(nullable NSError *)error

(5)當接收到伺服器響應的時候,告訴伺服器接收資料(調用block)

//預設情況下,當接收到伺服器響應之後,伺服器認為用戶端不需要接收資料,所以後面的代理方法不會調用    //如果需要繼續接收伺服器返回的資料,那麼需要調用block,並傳入對應的策略    /*        NSURLSessionResponseCancel = 0, 取消任務        NSURLSessionResponseAllow = 1,  接收任務        NSURLSessionResponseBecomeDownload = 2, 轉變成下載        NSURLSessionResponseBecomeStream NS_ENUM_AVAILABLE(10_11, 9_0) = 3, 轉變成流    */    completionHandler(NSURLSessionResponseAllow);

NSURLSession下載檔案-代理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.