NSURLConnection

NSURLConnection

  • 常用類
    • NSURL:請求地址
    • NSURLRequest:一個NSURLRequest對象就代表一個請求耿戚,包含的信息有
      • 一個NSURL對象
      • 請求方法(默認(rèn)是GET)寺谤、請求頭窿锉、請求體
      • 請求超時
      • ...
    • NSMutableURLRequest:NSURLRequest的子類 (比如使用POST請求)
    • NSURLConnection
      • 負(fù)責(zé)發(fā)送請求桅咆,建立客戶端和服務(wù)器的連接
      • 發(fā)送數(shù)據(jù)給服務(wù)器王浴,收集來自服務(wù)器的數(shù)據(jù)
      • 使用步驟
        • 1.創(chuàng)建一個NSURL對象,設(shè)置請求路徑
        • 2.傳入NSURL創(chuàng)建一個NSURLRequest對象山卦,設(shè)置請求頭和請求體
        • 3.使用NSURLConnection發(fā)送請求
  • GET請求
    • 01.確定請求路徑NSURL
      • URLWithString:
    • 02.創(chuàng)建請求對象NSURLRequest
      • 該請求對象內(nèi)部默認(rèn)會提供請求頭和(請求體) |請求方法默認(rèn)是GET
      • requestWithURL:
      • alloc initWithURL:
    • 03.使用NSRULConnection發(fā)送GET請求
      • 返回值就是響應(yīng)體信息
      • 同步請求鞋邑,開發(fā)中用的不多,網(wǎng)速比較慢的時候會卡住主線程sendSynchronousRequest:...
        • 參數(shù)一:請求對象
        • 參數(shù)二:響應(yīng)頭信息(傳地址)
          • 初始化一個響應(yīng)頭信息
        • 參數(shù)三:錯誤信息(傳地址)
          • 初始化一個錯誤信息
      • 異步請求不會卡住主線程sendAsynchronousRequest:...
        • 參數(shù)一:請求對象
        • 參數(shù)二:隊列账蓉,決定block塊在哪個線程中調(diào)用
        • 參數(shù)三:completionHandler完成(成功|失敗)之后的回調(diào)枚碗,response:響應(yīng)頭信息,包含狀態(tài)碼铸本、響應(yīng)時間视译、請求路徑等信息;data:響應(yīng)體信息归敬;connectionError:錯誤信息
        • 怎么拿到狀態(tài)碼?
          • NSHTTPURLResponse是真實類型和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
  • 通過代理發(fā)送異步請求
    • 01.確定請求路徑NSURL
      • URLWithString:
    • 02.創(chuàng)建請求對象NSURLRequest
      • 該請求對象內(nèi)部默認(rèn)會提供請求頭和(請求體) |請求方法默認(rèn)是GET
      • requestWithURL:
      • alloc initWithURL:
    • 03.設(shè)置代理
      • 方法一:NSURLConnection alloc initWithRequest:delegate:
      • 方法二:NSURLConnection allocinitWithRequest:delegate:startImmdiately:YES
        • 如果設(shè)置startImmdiately為NO汪茧,怎么發(fā)送網(wǎng)絡(luò)請求?調(diào)用start方法發(fā)送網(wǎng)絡(luò)請求
      • 怎么拿到服務(wù)器返回數(shù)據(jù)限番?
      • 怎么取消請求舱污? cancel
    • 04.遵守代理協(xié)議<NSURLConnectionDataDelegate>
    • 05.實現(xiàn)代理方法
      • 接收到服務(wù)器響應(yīng)的時候調(diào)用connection:didReceiveResponse:
        • 初始化可變的數(shù)據(jù)
      • 接收到服務(wù)器返回的數(shù)據(jù)的時候調(diào)用connection:didReceiveData:
        • 該方法可能會調(diào)用多次
        • 拼接服務(wù)器返回的數(shù)據(jù)
      • 失敗的時候會調(diào)用connection:didFailWithError:
      • 請求完成的時候調(diào)用該方法connectionDidFinishLoading:
        • 解析數(shù)據(jù)
    • 代理使用場景:下載大文件的時候
    • 設(shè)置代理好處:監(jiān)聽文件下載進(jìn)度
  • POST

    • 發(fā)送一個異步請求
    • 01.確定請求路徑URLWithString:
    • 02.創(chuàng)建可變請求對象NSMutableURLRequest
      • requestWithURL:
      • 默認(rèn)請求頭|請求方法(GET)
      • 2.1修改請求方法為POST.HTTPMethod = @"POST"
      • 2.2設(shè)置參數(shù),設(shè)置請求體
        • username |pwd |type
        • .HTTPBody = 把字符串轉(zhuǎn)成二進(jìn)制數(shù)據(jù):[@"username = 1 &pwd = 1 & type = JSON" dataUsingEncoding];
      • 2.3設(shè)置其他屬性
        • 請求超時時間.timeoutInterval:如果在該時間段內(nèi)沒有完成請求那么就認(rèn)為請求失敗,開發(fā)中一般是15s或30s
        • 設(shè)置請求頭信息setValue:forHTTPHeaderField:應(yīng)用場景:如果公司想要收集用戶的信息,可以通過客戶端的環(huán)境來收集User-Agent
        • 設(shè)置請求頭多條信息addValue:forHTTPHeaderField:
    • 03.發(fā)送異步請求
    • 04.解析服務(wù)器返回的數(shù)據(jù)
  • GET請求和POST請求的區(qū)別弥虐?

    • GET請求的步驟
      • 確定請求路徑(包含參數(shù))
      • 創(chuàng)建請求對象
      • 使用NSURLConnection發(fā)送請求
    • POST請求
      • 確定請求路徑(不包含參數(shù))
      • 創(chuàng)建可變的請求對象
      • 修改請求方法為POST
      • 設(shè)置請求體(設(shè)置參數(shù))
      • 使用NSURLConnection發(fā)送請求
    • 請求路徑的區(qū)別
      • GET:協(xié)議頭://主機(jī)地址/接口名稱扩灯?參數(shù)1&參數(shù)2&參數(shù)3
      • POST:協(xié)議頭://主機(jī)地址/接口名稱
  • 中文轉(zhuǎn)碼處理
    • 確定請求路徑(包含參數(shù))
      • username = 李 &pwd =li &type = JSON
      • 瀏覽器內(nèi)部在發(fā)送網(wǎng)絡(luò)請求的時候會做中文轉(zhuǎn)碼處理
      • [urlStr stringByAddingpERCENTeSCAPESusingEncoding:NSUTF8StringEncoding]
      • URLWithString:
    • 創(chuàng)建請求對象
    • 使用NSURLConnection發(fā)送請求
    • 解析數(shù)據(jù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末媚赖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子珠插,更是在濱河造成了極大的恐慌惧磺,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件捻撑,死亡現(xiàn)場離奇詭異磨隘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)顾患,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進(jìn)店門番捂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人江解,你說我怎么就攤上這事设预。” “怎么了犁河?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵鳖枕,是天一觀的道長。 經(jīng)常有香客問我呼股,道長耕魄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任彭谁,我火速辦了婚禮吸奴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缠局。我一直安慰自己则奥,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布狭园。 她就那樣靜靜地躺著读处,像睡著了一般。 火紅的嫁衣襯著肌膚如雪唱矛。 梳的紋絲不亂的頭發(fā)上罚舱,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天,我揣著相機(jī)與錄音绎谦,去河邊找鬼管闷。 笑死,一個胖子當(dāng)著我的面吹牛窃肠,可吹牛的內(nèi)容都是我干的包个。 我是一名探鬼主播,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼兔毒!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起黄娘,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤糯而,失蹤者是張志新(化名)和其女友劉穎天通,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歧蒋,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡土砂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了谜洽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萝映。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖阐虚,靈堂內(nèi)的尸體忽然破棺而出序臂,到底是詐尸還是另有隱情,我是刑警寧澤实束,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布奥秆,位于F島的核電站,受9級特大地震影響咸灿,放射性物質(zhì)發(fā)生泄漏构订。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一避矢、第九天 我趴在偏房一處隱蔽的房頂上張望悼瘾。 院中可真熱鬧,春花似錦审胸、人聲如沸亥宿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烫扼。三九已至,卻和暖如春碍庵,著一層夾襖步出監(jiān)牢的瞬間映企,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工静浴, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留卑吭,地道東北人。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓马绝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挣菲。 傳聞我的和親對象是個殘疾皇子富稻,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,937評論 2 361

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