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:)