iOS 網(wǎng)絡(luò)訪問(wèn) - NSURLConnection

iOS 網(wǎng)絡(luò)訪問(wèn)

  • 蘋(píng)果 API
    • NSURLConnection
      iOS 9.0 之后就會(huì)建議使用 NSURLSession "Use NSURLSession (see NSURLSession.h)")
    • NSURLSession(iOS 7.0)
    • CFNetwork(底層實(shí)現(xiàn))
  • 第三方框架
    • AFNetworking
    • ASI
      這個(gè)可能很多人已經(jīng)不用了茎活,因?yàn)樽髡咭呀?jīng)不再更新了,但是 ASI 的下載還是很好用的琢唾,而且 ASI 是通過(guò) CFNetwork 實(shí)現(xiàn)的载荔,首先效率很高,而且底層本來(lái)就很穩(wěn)定采桃,不更新也是很正常的

NSURLConnection

    NSURL *url = [NSURL     NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
    
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    // 需要修改請(qǐng)求頭或者請(qǐng)求體的時(shí)候懒熙,需要的是 mutable URL request
    NSMutableURLRequest *requestM = [[NSMutableURLRequest alloc] initWithURL:url];
    [requestM setValue:@"iPhone AppleWebKit" forHTTPHeaderField:@"User_Agent"];
    
    __weak typeof(self) weakSelf = self;
    // requestM 打開(kāi)的才是移動(dòng)端的網(wǎng)頁(yè)
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
        if (connectionError == nil && data.length > 0) {
            NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            [weakSelf.webView loadHTMLString:html baseURL:url];
        }
    }];

代碼其實(shí)挺簡(jiǎn)單的,而且 NSURLConnection 已經(jīng) 9.0 棄用了普办,如果還有想要嘗試的童鞋還是可以看看的工扎,畢竟是蘋(píng)果最早處理網(wǎng)絡(luò)訪問(wèn)的方法。
一般 connection 都會(huì)異步發(fā)送請(qǐng)求衔蹲,但是也有同步的時(shí)候肢娘,比如斷點(diǎn)續(xù)傳,下載文件之前需要知道上次下載文件大小舆驶,就可以同步發(fā)送請(qǐng)求橱健,而且可以發(fā)送 HEAD 請(qǐng)求。
HEAD 請(qǐng)求

    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/videos.zip"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    // HEAD 請(qǐng)求不會(huì)返回響應(yīng)體贞远,只是返回響應(yīng)頭畴博,可以查看數(shù)據(jù)大小
    request.HTTPMethod = @"HEAD";
    NSURLResponse *response = nil;
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:NULL];
    NSLog(@"HEAD response head -- %zd", response.expectedContentLength);
    NSLog(@"HEAD response body -- %zd", data.length);
P.S.(Postscript)

GET 請(qǐng)求

    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/login.php?username=username+&password=pwd"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
        if (connectionError == nil && data.length > 0) {
            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
            NSLog(@"%@", dict);
        } else {
            NSLog(@"%@", connectionError);
        }
    }];

POST 請(qǐng)求

    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/login.php"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    // 默認(rèn)是通過(guò) GET 發(fā)送請(qǐng)求
    request.HTTPMethod = @"POST";
    NSString *requestBodyString = @"username=username&password=pwd";
    NSData *requestBody = [requestBodyString dataUsingEncoding:NSUTF8StringEncoding];
    request.HTTPBody = requestBody;
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
        if (connectionError == nil && data.length > 0) {
            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
            NSLog(@"%@", dict);
        } else {
            NSLog(@"%@", connectionError);
        }
    }];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蓝仲,隨后出現(xiàn)的幾起案子俱病,更是在濱河造成了極大的恐慌,老刑警劉巖袱结,帶你破解...
    沈念sama閱讀 211,561評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亮隙,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡垢夹,警方通過(guò)查閱死者的電腦和手機(jī)溢吻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人促王,你說(shuō)我怎么就攤上這事犀盟。” “怎么了蝇狼?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,162評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵阅畴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我迅耘,道長(zhǎng)贱枣,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,470評(píng)論 1 283
  • 正文 為了忘掉前任颤专,我火速辦了婚禮纽哥,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘栖秕。我一直安慰自己春塌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布累魔。 她就那樣靜靜地躺著摔笤,像睡著了一般。 火紅的嫁衣襯著肌膚如雪垦写。 梳的紋絲不亂的頭發(fā)上吕世,一...
    開(kāi)封第一講書(shū)人閱讀 49,806評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音梯投,去河邊找鬼命辖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛分蓖,可吹牛的內(nèi)容都是我干的尔艇。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評(píng)論 3 407
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼么鹤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼终娃!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蒸甜,我...
    開(kāi)封第一講書(shū)人閱讀 37,712評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤棠耕,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后柠新,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體窍荧,經(jīng)...
    沈念sama閱讀 44,166評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評(píng)論 2 327
  • 正文 我和宋清朗相戀三年恨憎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蕊退。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,643評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瓤荔,靈堂內(nèi)的尸體忽然破棺而出净蚤,到底是詐尸還是另有隱情,我是刑警寧澤输硝,帶...
    沈念sama閱讀 34,306評(píng)論 4 330
  • 正文 年R本政府宣布塞栅,位于F島的核電站,受9級(jí)特大地震影響腔丧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜作烟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評(píng)論 3 313
  • 文/蒙蒙 一愉粤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拿撩,春花似錦衣厘、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,745評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至探赫,卻和暖如春型宙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背伦吠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,983評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工妆兑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人毛仪。 一個(gè)月前我還...
    沈念sama閱讀 46,351評(píng)論 2 360
  • 正文 我出身青樓搁嗓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親箱靴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子腺逛,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評(píng)論 2 348

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

  • iOS開(kāi)發(fā)系列--網(wǎng)絡(luò)開(kāi)發(fā) 概覽 大部分應(yīng)用程序都或多或少會(huì)牽扯到網(wǎng)絡(luò)開(kāi)發(fā),例如說(shuō)新浪微博衡怀、微信等棍矛,這些應(yīng)用本身可...
    lichengjin閱讀 3,644評(píng)論 2 7
  • 13.服務(wù)器圖片改了,url沒(méi)有變狈癞,需求茄靠,服務(wù)器的圖片變了,就從服務(wù)器加載圖片蝶桶,如果服務(wù)器的沒(méi)變慨绳,就從本地加載 1...
    AlanGe閱讀 1,139評(píng)論 0 1
  • 目錄 網(wǎng)絡(luò)基本概念 TCP/IP協(xié)議簇基本概念 HTTP 網(wǎng)絡(luò)開(kāi)發(fā)技術(shù)解決方案 數(shù)據(jù)解析 網(wǎng)絡(luò)優(yōu)化 1. 網(wǎng)絡(luò)基本...
    Ryan___閱讀 1,353評(píng)論 1 0
  • 網(wǎng)絡(luò) http請(qǐng)求方式? 通常,HTTP的請(qǐng)求方式有3種脐雪,分別是:POST厌小、GET、HEAD战秋。POST和GET方法...
    b485c88ab697閱讀 7,220評(píng)論 1 36
  • 不知道想說(shuō)什么璧亚,最近壓力是有點(diǎn)過(guò)大了。 做人挺累的脂信,有時(shí)候難免會(huì)想癣蟋,為什么不能尋死,好像有很多理由狰闪,又好像沒(méi)有疯搅,消...
    喜歡做白日夢(mèng)的毛毛子閱讀 136評(píng)論 0 0