NSURLConnection和NSURLSession

  • NSURLConnection和NSURLSession都是網(wǎng)絡(luò)請求類!

  • 它們都可以實現(xiàn)數(shù)據(jù)請求和上傳數(shù)據(jù)。

  • NSURLConnection這個API未來將會被NSURLSession取代拆融!因為在 2013 的 WWDC 上,蘋果推出了 NSURLConnection
    的繼任者:NSURLSession行嗤。

  • 現(xiàn)在主流的網(wǎng)絡(luò)開發(fā)框架AFNetworking瓤帚,已經(jīng)是添加了NSURLSession相關(guān)的支持了悼泌。
  • NSURLSession包括了與之前相同的組件松捉,NSURLRequest與 NSURLCache,但是把 NSURLConnection 替換成了NSURLSession馆里、NSURLSessionConfiguration
    以及 NSURLSessionTask
    的 3 個子類:
    -NSURLSessionDataTask
    -NSURLSessionUploadTask
    -NSURLSessionDownloadTask

  • 這 3 個子類封裝了現(xiàn)代程序三個最基本的網(wǎng)絡(luò)任務(wù):獲取數(shù)據(jù)隘世,比如 JSON 或者 XML,上傳文件和下載文件鸠踪。

  • NSURLSessionDownloadTask:下載用的Task;
    NSURLSessionDataTask:可以上傳內(nèi)容丙者,上傳完成后再進行下載;
    NSURLSessionUploadTask:上傳用的Task,傳完以后不會再下載返回結(jié)果(是NSURLSessionDataTask的子類);

  • 補充一下:

    1-->NSURL
     1> 將字符串轉(zhuǎn)為網(wǎng)絡(luò)資源定位符
     + (instancetype)URLWithString:(NSString *)URLString;
    
2.--->NSData
  1> 同步獲取網(wǎng)絡(luò)數(shù)據(jù)
  + (instancetype)dataWithContentsOfURL:(NSURL *)url;
  2> 異步獲取網(wǎng)絡(luò)數(shù)據(jù)(召喚一個人幫你干活的意思S堋P得健!)
  + (void)detachNewThreadSelector:(SEL)selector toTarget:(id)target withObject:(id)argument;
3.--->NSURLRequest
  1> 創(chuàng)建請求
  + (instancetype)requestWithURL:(NSURL *)URL;
4、---->NSURLResponse
1> 獲取資源的總大小
@property (readonly) long long expectedContentLength;
2> 獲取資源的名字
@property (readonly, copy) NSString *suggestedFilename; 

NSURLConnection的介紹纷捞!

NSURLConnection是可以實現(xiàn)同步和異步的痢虹。但別忘了要實現(xiàn)代理<NSURLConnectionDataDelegate>
-可以實現(xiàn)同步和異步請求:

1> 向服務(wù)器發(fā)起同步請求
+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error;

2> 向服務(wù)器發(fā)起異步請求    
+ (NSURLConnection*)connectionWithRequest:(NSURLRequest *)request delegate:(id)delegate;
  • 同步請求:

  • // urlStr有中文
    NSString *urlStr = @"http://img.pconline.com.cn/images/upload/upc/tx/photoblog/1512/22/c7/16739418_1450755319331_mthumb.jpg";
    // 注意有中文要進行轉(zhuǎn)碼,轉(zhuǎn)為UTF8
    NSURL *url = [NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    // 請求類
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    // 服務(wù)器響應(yīng)
    NSURLResponse *response = [[NSURLResponse alloc] init];
    NSLog(@"--開始下載--");
    // sync 同步     async異步
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
    NSLog(@"--下載完成--");
    
    NSLog(@"%ld",data.length);
    
  • 異步請求:
    NSString *urlStr = @"http://127.0.0.1/dataSource/阿安踏.json";
    // 帶中文主儡,要轉(zhuǎn)換
    NSURL *url = [NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    NSURLRequest request = [NSURLRequest requestWithURL:url];
    // 異步請求
    // + (NSURLConnection
    )connectionWithRequest:(NSURLRequest *)request delegate:(id)delegate;
    _connection = [NSURLConnection connectionWithRequest:request delegate:self];

    // 狀態(tài)欄中顯示網(wǎng)絡(luò)狀態(tài)
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
    }
    
  • 代理方法:
    NSURLConnection代理方法
    1> 下載數(shù)據(jù)失敗
    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;
    2> 接收到數(shù)據(jù)【數(shù)據(jù)較多時會執(zhí)行多次】
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
    3> 接受到服務(wù)器的響應(yīng)
    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response;
    4> 數(shù)據(jù)接收完成
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection;

NSURLSession介紹

  • NSURLSession[都是異步操作奖唯,且這是一個單例類]
    -1> 方法一

    • (NSURLSessionDataTask *)dataTaskWithURL:(NSURL *)url completionHandler:(void (^)(NSData *data, NSURLResponse *response, NSError *error))completionHandler

      2> 方法二

      • (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request completionHandler:(void (^)(NSData *data, NSURLResponse *response, NSError *error))completionHandler

        3> 開始執(zhí)行操作

      • (void)resume;
        // 開始執(zhí)行操作
        [task resume];

  • 簡單使用:
    // 構(gòu)建session
    NSURLSession *session = [NSURLSession sharedSession];// 單利類
    // 網(wǎng)絡(luò)請求地址
    NSString *urlStr = @"http://127.0.0.1.local/dataSource/LV-價格.json";
    // task
    NSURLSessionDataTask *task = [session dataTaskWithURL:[NSURL URLWithString:[urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
    NSLog(@"%@",dict);
    }];

     // 開始執(zhí)行操作
    [task resume];
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市糜值,隨后出現(xiàn)的幾起案子丰捷,更是在濱河造成了極大的恐慌,老刑警劉巖寂汇,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓢阴,死亡現(xiàn)場離奇詭異,居然都是意外死亡健无,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門液斜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來累贤,“玉大人,你說我怎么就攤上這事少漆【矢啵” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵示损,是天一觀的道長渗磅。 經(jīng)常有香客問我,道長检访,這世上最難降的妖魔是什么始鱼? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮脆贵,結(jié)果婚禮上医清,老公的妹妹穿的比我還像新娘。我一直安慰自己卖氨,他們只是感情好会烙,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著筒捺,像睡著了一般柏腻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上系吭,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天五嫂,我揣著相機與錄音,去河邊找鬼村斟。 笑死贫导,一個胖子當著我的面吹牛抛猫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播孩灯,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼闺金,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了峰档?” 一聲冷哼從身側(cè)響起败匹,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎讥巡,沒想到半個月后掀亩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡欢顷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年槽棍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抬驴。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡炼七,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出布持,到底是詐尸還是另有隱情豌拙,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布题暖,位于F島的核電站按傅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏胧卤。R本人自食惡果不足惜唯绍,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望灌侣。 院中可真熱鬧推捐,春花似錦、人聲如沸侧啼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痊乾。三九已至皮壁,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哪审,已是汗流浹背蛾魄。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人滴须。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓舌狗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親扔水。 傳聞我的和親對象是個殘疾皇子痛侍,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

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