IOS9網絡編程的重大改變:
(1)NSURLConnection:IOS9之前使用之后棄用
? ?NSURLSession:IOS7.0之后出來IOS9只能使用這個類
(2)后臺服務器傳輸協議由HTTP改成HTTPS。
IOS9之后需要添加下面的東西
IOS開發->info.plist->App
Transpart Security Settings->Allow Arbitrary Loads ->YES
一、URL
1、概念:
Uniform Resource Locator 統一資源定位符
2、結構
URL包含模式(或稱協議)、服務器名稱(或IP地址)、路徑和文件名
https://www.baidu.com/img/bd_logo1.png
可以通過URL找到服務器中的文件
注意:URL里面不要出現中文字符不支持->需要轉碼
二、HTTP
1、全稱:Hypertext Transfer Protocol超文本傳輸協議
HTTPS (全稱:Hyper Text Transfer Protocol over Secure Socket
Layer)是以安全為目標的HTTP通道,簡單講是HTTP的安全版
2、通訊流程:
首先客戶端發送一個請求(request)給服務器,服務器在接收到這個請求后將生成一個響應(response)返回給客戶端
*發送一個請求沒有任何回應
(1)沒聯網
(2)請求內容錯誤URL
*發送一個請求有回應但是沒能得到請求的內容
(1)服務器需要的內容與發送請求的內容不匹配一般在回應中有錯誤碼
(2)服務器需要的內容與發送請求的時候未發送
(3)后臺服務器代碼的問題
一般在回應中有錯誤碼:code:xxx
(300-3007表示的意思是:要完成請求,您需要進一步進行操作。通常,這些狀態代碼是永遠重定向的。
300(多種選擇)服務器根據請求可執行多種操作。服務器可根據請求者來選擇一項操作,或提供操作列表供其選擇)
*常用的請求方法:
(1)get數據寫在URL后面
(2)post寫在請求體里面post傳遞的數據量沒有限制(具體還得看服務器的處理能力)
三、request
1、概念:一個URL加載的請求NSURLRequest
當需要請求頭的時候需使用可變的request即NSMutableURLRequest添加表頭
2、在請求中需要的兩個基本元素
(1)要加載的URL
(2)加載的方式(默認的是get)
3、兩類請求方法
(1)不考慮緩存策略
1)+ (instancetype)requestWithURL:(NSURL *)URL;
2)- (instancetype)initWithURL:(NSURL *)URL
(2)考慮緩存策略超時限制
1)+ (instancetype)requestWithURL:(NSURL *)URL
cachePolicy:(NSURLRequestCachePolicy)cachePolicy
timeoutInterval:(NSTimeInterval)timeoutInterval
2)- (instancetype)initWithURL:(NSURL *)URL
cachePolicy:(NSURLRequestCachePolicy)cachePolicy
timeoutInterval:(NSTimeInterval)timeoutInterval
*cachePolicy緩存方式
*timeoutInterval超時的時間間隔s
3) NSURLRequestUseProtocolCachePolicy,默認的緩存策略如果緩存不存在直接從服務端獲取如果緩存存在會根據response中的Cache-Control字段判斷下一步操作
NSURLRequestReloadIgnoringCacheData忽略緩存重新請求
NSURLRequestReturnCacheDataElseLoad有緩存就使用不管其有效性沒有緩存就重新請求
NSURLRequestReturnCacheDataDontLoad有緩存就用緩存沒有緩存就不發請求當做請求出錯處理(用于離線模式)
四、網絡環境判斷
1、Reachability類名
(1)導入Reachability類名
(2)初始化Reachability對象,HostName盡量用一個比較穩定的網絡
(3)添加觀察者,接收網絡環境發生改變的通知
(4)開始監測
(5)在通知中得到Reachability的對象
2、AFNetWorking中AFNetworkReachabilityManager
(1)導入類庫
(2)創建檢測對象類方法sharedManager
(3)開始監測
(4)通過檢測對象獲得檢測結果回調方法(setReachabilityStatusChangeBlock:)