iOS NSURLSession 網(wǎng)絡(luò)學習

URL Loading System?

這一章節(jié): 主要講解iOS系統(tǒng)是如何使用標準的Internet協(xié)議與url交互并與服務(wù)器通信。

1. 你可以通過標準的HTTPS協(xié)議, 或者你自定義的協(xié)議通過URL(資源訪問標識).?

2. 由于加載數(shù)據(jù)的過程是異步執(zhí)行的, 如果響應(yīng)體或者錯誤返回, APP應(yīng)該保持響應(yīng).

3. 你通過NSURLSession類可以創(chuàng)建NSURLSessionTask多個類的實例. 可以獲取數(shù)據(jù), 下載文件, 上傳數(shù)據(jù), 上傳文件.

4.你可以通過?NSURLSessionConfiguration這個類來控制cookie , cache, 或者蜂窩數(shù)據(jù)建立連接等問題.

5.你能通過一個session 反復的創(chuàng)建tasks. 通過創(chuàng)建不同NSURLSessionConfiguration?對的session初始化. 有針對的對cookie, cache 等進行不同的設(shè)置.


上面的這種圖, 簡單的實現(xiàn)了瀏覽器的無痕瀏覽模式.

Fetching Website Data into Memory

1.NSURLSessionDataTask用于小型數(shù)據(jù)和服務(wù)器交互.

2.?NSURLSessionDownloadTask用于大量的數(shù)據(jù)和服務(wù)器交互并寫入系統(tǒng)文件.

3. 如果您的需求相當?shù)暮唵? 可以通過sharedSession 方法創(chuàng)建session實例.

例如:

4. 如果您希望委托回調(diào)與傳輸進行交互, 可以通過NSURLSessionConfiguration實例,并指定NSURLSessionDelegate 這個代理對象.

例如:


5.?dataTask 是在暫停的情況下創(chuàng)建的, 這種情況下你需要調(diào)用resume.

Note:

? ? 注意不要創(chuàng)建過多的session對象,同類的情況盡量公用.

NSURLSession

An object that coordinates a group of related network data transfer tasks.

我的翻譯是:(通過該對象來協(xié)調(diào)一組網(wǎng)絡(luò)傳輸任務(wù)對象)

Overview

通過該類和其他類配合使用, 可以通過簡單的API調(diào)用, 就能獲取內(nèi)容. 并且還提供了非常豐富的代理回調(diào)方法. 例如: 證書校驗, 后臺下載功能, 暫停下載等功能.

支持的URL schemes:data,?file,?ftp,?http, and?https

傳輸類型支持:代理服務(wù)器,SOCKS網(wǎng)關(guān)(通過用戶的首選項配置)

支持的HTTP版本:HTTP/1.1, SPDY, and HTTP/2 protocols.RFC 7540

需要為協(xié)議協(xié)商者支持ALPN或NPN的服務(wù)器

通過這個類:NSURLProtocol. 我們也能自定義自己的協(xié)議.

第一篇:session初始化:

sharedSession:?

1.不能傳輸大量的數(shù)據(jù).

2.無法定制連接行為.

3.無法對HTTPS 進行證書認證.4.不能執(zhí)行后臺的下載任務(wù).

defaultSessionConfiguration

1.基于磁盤的持久緩存

2.并將憑據(jù)存儲在用戶的密鑰鏈中。它還將cookie(默認情況下)存儲在與NSURLConnection和NSURLDownload類相同的共享cookie存儲中。

ephemeralSessionConfiguration?

1.無痕瀏覽模式. 對APP 的性能有一定的損耗.

note: 該對象會被APP 強引用. 可以調(diào)用invalidates 這個方法釋放對象.

? ? ?session支持的任務(wù)類型:

簡短的data 數(shù)據(jù).

文件上傳任務(wù), 支持后臺上傳.

下載任務(wù).

note: session是異步的, 可以通過block, 和delegate兩種方式返回.另外還提供進度屬性查詢.還支持取消、重新啟動或恢復和暫停任務(wù),并提供恢復暫停、取消或失敗下載的能力。

第二篇: APP 安全傳輸(ATS)

?iOS 9.0?session 所使用的HTTP連接都啟用了ATS.ATS要求HTTP連接使用HTTPS (RFC 2818)。

About Information Property List Files配置表. 有需要可以細看.

第三篇: session的代理回調(diào).?

? ? ? 略

第四篇:遵循NSCopying協(xié)議

? ? ? 1.當你的應(yīng)用程序復制一個會話或任務(wù)對象時,你會得到相同的對象。

? ? ? 2.當你的應(yīng)用程序復制一個配置對象時,你會得到一個可以獨立修改的新拷貝。

第五篇:遵循NSCopying協(xié)議

? ? ? 1. 線程安全的.

第六篇: session的管理

1.finishTasksAndInvalidate:?使會話無效,允許完成任何未完成的任務(wù)。

2.flushWithCompletionHandler:將cookie和憑據(jù)刷新到磁盤,清除臨時緩存,并確保未來的請求發(fā)生在新的TCP連接上。

3.getTasksWithCompletionHandler:使用會話中的所有數(shù)據(jù)、上傳和下載任務(wù)異步調(diào)用完成回調(diào)。

4.getAllTasksWithCompletionHandler:異步調(diào)用一個會話中所有任務(wù)的完成回調(diào)。

5.invalidateAndCancel:?取消所有未完成的任務(wù),然后使會話無效。

?6.resetWithCompletionHandler:清空所有cookie、緩存和憑據(jù)存儲,刪除磁盤文件,將正在進行的下載刷新到磁盤,并確保未來的請求發(fā)生在新的套接字上。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容