ios 開發(fā)中的網(wǎng)絡數(shù)據(jù)請求

今天來說說關(guān)于iOS開發(fā)過程中的網(wǎng)絡數(shù)據(jù)請求鹃祖。
現(xiàn)在常用的網(wǎng)絡數(shù)據(jù)請求常見的有四種方式:同步GET恬口,同步POST,異步GET歉秫,異步POST端考。

一揭厚,同步GET

//1.將網(wǎng)址初始化成一個OC字符串對象
NSString *urlString = [NSString stringWithFormat:@"%@query=%@&ion=%@output=json&ak=6E823f587c95f0148c19993539b99295", kBusinessInfoURL, @"銀行"扶供, @"濟南"];
//如果網(wǎng)址中存在中文,進行URLEncode.
NSString *newUrlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//2.構(gòu)建網(wǎng)絡URL對象,NSURL
NSURL *url = [NSURL URLWithString:newUrlStr];
//3.創(chuàng)建網(wǎng)絡請求
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];
//創(chuàng)建同步連接
NSURLResponse *response = nil;
NSError *error = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request reurningResponse:&response error:&error];

當創(chuàng)建好同步連接以后太援,就可以采用響應的方法進行解析提岔。下面創(chuàng)建異步鏈接也是一樣的

二笋敞,同步POST

//1.根據(jù)網(wǎng)址初始化OC字符串對象
NSString *urlStr = [NSString stringWithFormat:@"%@",kVideoURL];
//2.創(chuàng)建NSURL對象
NSURL *url = [NSURL URLWithString:urlStr];
//3.創(chuàng)建請求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//4,創(chuàng)建參數(shù)字符串對象
NSString *parmStr = @"method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10";
//5.將字符串轉(zhuǎn)成NSData對象
NSString *parmData = [parmStr dataUsingEncoding:NSUTF8StringEncoding];
//6.設置請求體
[request setHTTPBody:pramData];
//7.設置請求體
[request setHTTPMethod:@"POST"];
//創(chuàng)建同步連接
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

三夯巷,異步GET

NSString *urlStr = [NSString stringWithFormat:@"http://image.zcool.com.cn/56/13/1308200901454.jpg"];
NSString *newStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:newStr];
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutIntercal;10];
 //異步鏈接(形式1,較少用)
    [NSURLConnection sendAsynchronousRequest:requst queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        self.imageView.image = [UIImage imageWithData:data];
        // 解析
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
        NSLog(@"%@", dic);
    }];

四,異步POST

// POST請求
    NSString *urlString = [NSString stringWithFormat:@"%@",kVideoURL];
    //創(chuàng)建url對象
    NSURL *url = [NSURL URLWithString:urlString];
    //創(chuàng)建請求
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];
    //創(chuàng)建參數(shù)字符串對象
    NSString *parmStr = [NSString stringWithFormat:@"method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10"];
    //將字符串轉(zhuǎn)換為NSData對象
    NSData *data = [parmStr dataUsingEncoding:NSUTF8StringEncoding];
    [request setHTTPBody:data];
    [request setHTTPMethod:@"POST"];
    //創(chuàng)建異步連接(形式二)
    [NSURLConnection connectionWithRequest:request delegate:self];

一般的喷兼,當創(chuàng)建異步連接時后雷,很少用到第一種方式季惯,經(jīng)常使用的是代理方法。關(guān)于NSURLConnectionDataDelegate,我們進場使用的協(xié)議方法為一下幾個:

// 服務器接收到請求時
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
}
// 當收到服務器返回的數(shù)據(jù)時觸發(fā), 返回的可能是資源片段
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
}
// 當服務器返回所有數(shù)據(jù)時觸發(fā), 數(shù)據(jù)返回完畢
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
}
// 請求數(shù)據(jù)失敗時觸發(fā)
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSLog(@"%s", __FUNCTION__);
}

最后走孽,分析一下這幾種呢網(wǎng)絡請求的區(qū)別磕瓷。

GET請求和POST請求的區(qū)別:

  1. GET請求的接口會包含參數(shù)部分困食,參數(shù)會作為網(wǎng)址的一部分,服務器地址與參數(shù)之間通過 ? 來間隔硕盹。POST請求會將服務器地址與參數(shù)分開叨咖,請求接口中只有服務器地址甸各,而參數(shù)會作為請求的一部分,提交后臺服務器趣倾。

  2. GET請求參數(shù)會出現(xiàn)在接口中,不安全善绎。而POST請求相對安全诫尽。

3.雖然GET請求和POST請求都可以用來請求和提交數(shù)據(jù),但是一般的GET多用于從后臺請求數(shù)據(jù)剂跟,POST多用于向后臺提交數(shù)據(jù)驹止。

同步和異步的區(qū)別:

同步鏈接:主線程去請求數(shù)據(jù),當數(shù)據(jù)請求完畢之前衣洁,其他線程一律不響應坊夫,會造成程序就假死現(xiàn)象砖第。

異步鏈接:會單獨開一個線程去處理網(wǎng)絡請求梧兼,主線程依然處于可交互狀態(tài),程序運行流暢羽杰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末考赛,一起剝皮案震驚了整個濱河市莉测,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌忍抽,老刑警劉巖董朝,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件益涧,死亡現(xiàn)場離奇詭異驯鳖,居然都是意外死亡,警方通過查閱死者的電腦和手機扭弧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門记舆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人御蒲,你說我怎么就攤上這事诊赊。” “怎么了碘箍?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵丰榴,是天一觀的道長。 經(jīng)常有香客問我换况,道長盗蟆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任挽拂,我火速辦了婚禮骨饿,結(jié)果婚禮上宏赘,老公的妹妹穿的比我還像新娘。我一直安慰自己闷游,他們只是感情好贴汪,可當我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布扳埂。 她就那樣靜靜地躺著阳懂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪巷燥。 梳的紋絲不亂的頭發(fā)上号枕,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天堕澄,我揣著相機與錄音霉咨,去河邊找鬼途戒。 笑死僵驰,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蒜茴。 我是一名探鬼主播粉私,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼抄肖,長吁一口氣:“原來是場噩夢啊……” “哼窖杀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起管毙,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤夭咬,失蹤者是張志新(化名)和其女友劉穎皱埠,沒想到半個月后咖驮,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體托修,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡睦刃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年涩拙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片工育。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡搓彻,死狀恐怖如绸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情旭贬,我是刑警寧澤怔接,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站稀轨,受9級特大地震影響扼脐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奋刽,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一谎势、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧杨名,春花似錦脏榆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至坞生,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卒废,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留剿牺,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親整陌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,601評論 2 353

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理殿遂,服務發(fā)現(xiàn),斷路器恩静,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,072評論 25 707
  • AFHTTPRequestOperationManager 網(wǎng)絡傳輸協(xié)議UDP懦底、TCP丐重、Http扮惦、Socket、X...
    Carden閱讀 4,337評論 0 12
  • iOS網(wǎng)絡編程讀書筆記 Facade Tester客戶端門面模式的實例(被動版本化) 被動版本化,所以硬編碼URL...
    melouverrr閱讀 1,606評論 3 7
  • 提到上世紀好萊塢的大眾情人,你或許會想到克拉克·蓋博襟锐、馬龍·白蘭度、格里高利·派克等英俊莫杈、瀟灑、多情的人物糊秆。 而在...
    股多多閱讀 1,091評論 0 0