iOS- 網(wǎng)絡(luò)編程

IOS9網(wǎng)絡(luò)編程的重大改變:

(1)NSURLConnection:IOS9之前使用之后棄用

? ?NSURLSession:IOS7.0之后出來(lái)IOS9只能使用這個(gè)類

(2)后臺(tái)服務(wù)器傳輸協(xié)議由HTTP改成HTTPS。

IOS9之后需要添加下面的東西

IOS開發(fā)->info.plist->App

Transpart Security Settings->Allow Arbitrary Loads ->YES

一、URL

1、概念:

Uniform Resource Locator 統(tǒng)一資源定位符

2、結(jié)構(gòu)

URL包含模式(或稱協(xié)議)、服務(wù)器名稱(或IP地址)、路徑和文件名

https://www.baidu.com/img/bd_logo1.png

可以通過(guò)URL找到服務(wù)器中的文件

注意:URL里面不要出現(xiàn)中文字符不支持->需要轉(zhuǎn)碼

二、HTTP

1、全稱:Hypertext Transfer Protocol超文本傳輸協(xié)議

HTTPS (全稱:Hyper Text Transfer Protocol over Secure Socket

Layer)是以安全為目標(biāo)的HTTP通道,簡(jiǎn)單講是HTTP的安全版

2、通訊流程:

首先客戶端發(fā)送一個(gè)請(qǐng)求(request)給服務(wù)器,服務(wù)器在接收到這個(gè)請(qǐng)求后將生成一個(gè)響應(yīng)(response)返回給客戶端

*發(fā)送一個(gè)請(qǐng)求沒有任何回應(yīng)

(1)沒聯(lián)網(wǎng)

(2)請(qǐng)求內(nèi)容錯(cuò)誤URL

*發(fā)送一個(gè)請(qǐng)求有回應(yīng)但是沒能得到請(qǐng)求的內(nèi)容

(1)服務(wù)器需要的內(nèi)容與發(fā)送請(qǐng)求的內(nèi)容不匹配一般在回應(yīng)中有錯(cuò)誤碼

(2)服務(wù)器需要的內(nèi)容與發(fā)送請(qǐng)求的時(shí)候未發(fā)送

(3)后臺(tái)服務(wù)器代碼的問題

一般在回應(yīng)中有錯(cuò)誤碼:code:xxx

(300-3007表示的意思是:要完成請(qǐng)求,您需要進(jìn)一步進(jìn)行操作。通常,這些狀態(tài)代碼是永遠(yuǎn)重定向的。

300(多種選擇)服務(wù)器根據(jù)請(qǐng)求可執(zhí)行多種操作。服務(wù)器可根據(jù)請(qǐng)求者來(lái)選擇一項(xiàng)操作,或提供操作列表供其選擇)

*常用的請(qǐng)求方法:

(1)get數(shù)據(jù)寫在URL后面

(2)post寫在請(qǐng)求體里面post傳遞的數(shù)據(jù)量沒有限制(具體還得看服務(wù)器的處理能力)

三、request

1、概念:一個(gè)URL加載的請(qǐng)求NSURLRequest

當(dāng)需要請(qǐng)求頭的時(shí)候需使用可變的request即NSMutableURLRequest添加表頭

2、在請(qǐng)求中需要的兩個(gè)基本元素

(1)要加載的URL

(2)加載的方式(默認(rèn)的是get)

3、兩類請(qǐng)求方法

(1)不考慮緩存策略

1)+ (instancetype)requestWithURL:(NSURL *)URL;

2)- (instancetype)initWithURL:(NSURL *)URL

(2)考慮緩存策略超時(shí)限制

1)+ (instancetype)requestWithURL:(NSURL *)URL

cachePolicy:(NSURLRequestCachePolicy)cachePolicy

timeoutInterval:(NSTimeInterval)timeoutInterval

2)- (instancetype)initWithURL:(NSURL *)URL

cachePolicy:(NSURLRequestCachePolicy)cachePolicy

timeoutInterval:(NSTimeInterval)timeoutInterval

*cachePolicy緩存方式

*timeoutInterval超時(shí)的時(shí)間間隔s

3) NSURLRequestUseProtocolCachePolicy,默認(rèn)的緩存策略如果緩存不存在直接從服務(wù)端獲取如果緩存存在會(huì)根據(jù)response中的Cache-Control字段判斷下一步操作

NSURLRequestReloadIgnoringCacheData忽略緩存重新請(qǐng)求

NSURLRequestReturnCacheDataElseLoad有緩存就使用不管其有效性沒有緩存就重新請(qǐng)求

NSURLRequestReturnCacheDataDontLoad有緩存就用緩存沒有緩存就不發(fā)請(qǐng)求當(dāng)做請(qǐng)求出錯(cuò)處理(用于離線模式)


四、網(wǎng)絡(luò)環(huán)境判斷

1、Reachability類名

(1)導(dǎo)入Reachability類名

(2)初始化Reachability對(duì)象,HostName盡量用一個(gè)比較穩(wěn)定的網(wǎng)絡(luò)

(3)添加觀察者,接收網(wǎng)絡(luò)環(huán)境發(fā)生改變的通知

(4)開始監(jiān)測(cè)

(5)在通知中得到Reachability的對(duì)象

2、AFNetWorking中AFNetworkReachabilityManager

(1)導(dǎo)入類庫(kù)

(2)創(chuàng)建檢測(cè)對(duì)象類方法sharedManager

(3)開始監(jiān)測(cè)

(4)通過(guò)檢測(cè)對(duì)象獲得檢測(cè)結(jié)果回調(diào)方法(setReachabilityStatusChangeBlock:)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容