NSURLConnection
- 常用類(lèi)
- NSURL:請(qǐng)求地址
- NSURLRequest:一個(gè)NSURLRequest對(duì)象就代表一個(gè)請(qǐng)求,包含的信息有
- 一個(gè)NSURL對(duì)象
- 請(qǐng)求方法(默認(rèn)是GET)、請(qǐng)求頭、請(qǐng)求體
- 請(qǐng)求超時(shí)
- ...
- NSMutableURLRequest:NSURLRequest的子類(lèi) (比如使用POST請(qǐng)求)
- NSURLConnection
- 負(fù)責(zé)發(fā)送請(qǐng)求,建立客戶端和服務(wù)器的連接
- 發(fā)送數(shù)據(jù)給服務(wù)器,收集來(lái)自服務(wù)器的數(shù)據(jù)
- 使用步驟
- 1.創(chuàng)建一個(gè)NSURL對(duì)象,設(shè)置請(qǐng)求路徑
- 2.傳入NSURL創(chuàng)建一個(gè)NSURLRequest對(duì)象,設(shè)置請(qǐng)求頭和請(qǐng)求體
- 3.使用NSURLConnection發(fā)送請(qǐng)求
- GET請(qǐng)求
- 01.確定請(qǐng)求路徑NSURL
- URLWithString:
- 02.創(chuàng)建請(qǐng)求對(duì)象NSURLRequest
- 該請(qǐng)求對(duì)象內(nèi)部默認(rèn)會(huì)提供請(qǐng)求頭和(請(qǐng)求體) |請(qǐng)求方法默認(rèn)是GET
- requestWithURL:
- alloc initWithURL:
- 03.使用NSRULConnection發(fā)送GET請(qǐng)求
- 返回值就是響應(yīng)體信息
-
同步請(qǐng)求,開(kāi)發(fā)中用的不多,網(wǎng)速比較慢的時(shí)候會(huì)卡住主線程sendSynchronousRequest:...- 參數(shù)一:請(qǐng)求對(duì)象
- 參數(shù)二:響應(yīng)頭信息(傳地址)
- 初始化一個(gè)響應(yīng)頭信息
- 參數(shù)三:錯(cuò)誤信息(傳地址)
- 初始化一個(gè)錯(cuò)誤信息
-
異步請(qǐng)求不會(huì)卡住主線程sendAsynchronousRequest:...- 參數(shù)一:請(qǐng)求對(duì)象
- 參數(shù)二:隊(duì)列,決定block塊在哪個(gè)線程中調(diào)用
- 參數(shù)三:completionHandler完成(成功|失敗)之后的回調(diào),response:響應(yīng)頭信息,包含狀態(tài)碼、響應(yīng)時(shí)間、請(qǐng)求路徑等信息;data:響應(yīng)體信息;connectionError:錯(cuò)誤信息
- 怎么拿到狀態(tài)碼?
- NSHTTPURLResponse是真實(shí)類(lèi)型和NSURLResponse是繼承關(guān)系
- 強(qiáng)轉(zhuǎn)NSHTTPURLResponse * res = (NSHTTPURLResponse*)response
- res.statusCode
- res.allHeaderFields所有響應(yīng)頭信息
- 04.解析服務(wù)器返回的數(shù)據(jù)
- 看上去好像是字典,本質(zhì)上字符串
- 把二進(jìn)制數(shù)據(jù)轉(zhuǎn)為字符串
- allocinitWithData:encoding:UTF8
- 05.修改配置文件:ATS
- 01.確定請(qǐng)求路徑NSURL
-
通過(guò)代理發(fā)送異步請(qǐng)求- 01.確定請(qǐng)求路徑NSURL
- URLWithString:
- 02.創(chuàng)建請(qǐng)求對(duì)象NSURLRequest
- 該請(qǐng)求對(duì)象內(nèi)部默認(rèn)會(huì)提供請(qǐng)求頭和(請(qǐng)求體) |請(qǐng)求方法默認(rèn)是GET
- requestWithURL:
- alloc initWithURL:
- 03.設(shè)置代理
- 方法一:NSURLConnection alloc initWithRequest:delegate:
- 方法二:NSURLConnection allocinitWithRequest:delegate:startImmdiately:YES
- 如果設(shè)置startImmdiately為NO,怎么發(fā)送網(wǎng)絡(luò)請(qǐng)求?調(diào)用start方法發(fā)送網(wǎng)絡(luò)請(qǐng)求
- 怎么拿到服務(wù)器返回?cái)?shù)據(jù)?
- 怎么取消請(qǐng)求? cancel
- 04.遵守代理協(xié)議<NSURLConnectionDataDelegate>
- 05.實(shí)現(xiàn)代理方法
- 接收到服務(wù)器響應(yīng)的時(shí)候調(diào)用connection:didReceiveResponse:
- 初始化可變的數(shù)據(jù)
- 接收到服務(wù)器返回的數(shù)據(jù)的時(shí)候調(diào)用connection:didReceiveData:
- 該方法可能會(huì)調(diào)用多次
- 拼接服務(wù)器返回的數(shù)據(jù)
- 失敗的時(shí)候會(huì)調(diào)用connection:didFailWithError:
- 請(qǐng)求完成的時(shí)候調(diào)用該方法connectionDidFinishLoading:
- 解析數(shù)據(jù)
- 接收到服務(wù)器響應(yīng)的時(shí)候調(diào)用connection:didReceiveResponse:
- 代理使用場(chǎng)景:下載大文件的時(shí)候
- 設(shè)置代理好處:監(jiān)聽(tīng)文件下載進(jìn)度
- 01.確定請(qǐng)求路徑NSURL
-
POST
- 發(fā)送一個(gè)異步請(qǐng)求
- 01.確定請(qǐng)求路徑URLWithString:
- 02.創(chuàng)建可變請(qǐng)求對(duì)象NSMutableURLRequest
- requestWithURL:
- 默認(rèn)請(qǐng)求頭|請(qǐng)求方法(GET)
- 2.1修改請(qǐng)求方法為POST.HTTPMethod = @"POST"
- 2.2設(shè)置參數(shù),設(shè)置請(qǐng)求體
- username |pwd |type
- .HTTPBody = 把字符串轉(zhuǎn)成二進(jìn)制數(shù)據(jù):[@"username = 1 &pwd = 1 & type = JSON" dataUsingEncoding];
- 2.3設(shè)置其他屬性
- 請(qǐng)求超時(shí)時(shí)間.timeoutInterval:如果在該時(shí)間段內(nèi)沒(méi)有完成請(qǐng)求那么就認(rèn)為請(qǐng)求失敗,開(kāi)發(fā)中一般是15s或30s
- 設(shè)置請(qǐng)求頭信息setValue:forHTTPHeaderField:應(yīng)用場(chǎng)景:如果公司想要收集用戶的信息,可以通過(guò)客戶端的環(huán)境來(lái)收集User-Agent
- 設(shè)置請(qǐng)求頭多條信息addValue:forHTTPHeaderField:
- 03.發(fā)送異步請(qǐng)求
- 04.解析服務(wù)器返回的數(shù)據(jù)
-
GET請(qǐng)求和POST請(qǐng)求的區(qū)別?
- GET請(qǐng)求的步驟
- 確定請(qǐng)求路徑(包含參數(shù))
- 創(chuàng)建請(qǐng)求對(duì)象
- 使用NSURLConnection發(fā)送請(qǐng)求
- POST請(qǐng)求
- 確定請(qǐng)求路徑(不包含參數(shù))
- 創(chuàng)建可變的請(qǐng)求對(duì)象
- 修改請(qǐng)求方法為POST
- 設(shè)置請(qǐng)求體(設(shè)置參數(shù))
- 使用NSURLConnection發(fā)送請(qǐng)求
- 請(qǐng)求路徑的區(qū)別
- GET:協(xié)議頭://主機(jī)地址/接口名稱(chēng)?參數(shù)1&參數(shù)2&參數(shù)3
- POST:協(xié)議頭://主機(jī)地址/接口名稱(chēng)
- GET請(qǐng)求的步驟
- 中文轉(zhuǎn)碼處理
- 確定請(qǐng)求路徑(包含參數(shù))
- username = 李 &pwd =li &type = JSON
- 瀏覽器內(nèi)部在發(fā)送網(wǎng)絡(luò)請(qǐng)求的時(shí)候會(huì)做中文轉(zhuǎn)碼處理
- [urlStr stringByAddingpERCENTeSCAPESusingEncoding:NSUTF8StringEncoding]
- URLWithString:
- 創(chuàng)建請(qǐng)求對(duì)象
- 使用NSURLConnection發(fā)送請(qǐng)求
- 解析數(shù)據(jù)
- 確定請(qǐng)求路徑(包含參數(shù))