(二)網(wǎng)絡(luò)編程N(yùn)SURLConnection

一.常用類(lèi)

1.NSURL:請(qǐng)求地址

例如:

NSURL*url = [NSURLURLWithString:@“https://www.xxx.com/login?test=test"];

2.NSURLRequest:一個(gè)NSURLRequest對(duì)象就代表一個(gè)請(qǐng)求蚯撩,它包含的信息有

一個(gè)NSURL對(duì)象

請(qǐng)求方法讯屈、請(qǐng)求頭蛔垢、請(qǐng)求體

請(qǐng)求超時(shí)

// 1.創(chuàng)建請(qǐng)求對(duì)象

NSURLRequest*request = [NSURLRequestrequestWithURL:url];

3.NSMutableURLRequest:NSURLRequest的子類(lèi)

// 1.請(qǐng)求路徑

NSURL*url = [NSURLURLWithString:@"https://www.xxx.com/login"];

// 2.創(chuàng)建請(qǐng)求

NSMutableURLRequest*request = [NSMutableURLRequestrequestWithURL:url];

//更改請(qǐng)求方法

request.HTTPMethod=@"POST";

//設(shè)置請(qǐng)求體

request.HTTPBody= [@“name=test007&pwd=123456"dataUsingEncoding:NSUTF8StringEncoding];

//設(shè)置超時(shí)(5秒后超時(shí))

request.timeoutInterval=5;

4.NSURLConnection

負(fù)責(zé)發(fā)送請(qǐng)求,建立客戶端和服務(wù)器的連接

發(fā)送數(shù)據(jù)給服務(wù)器掘而,并收集來(lái)自服務(wù)器的響應(yīng)數(shù)據(jù)

二.NSURLConnection的使用步驟

創(chuàng)建一個(gè)NSURL對(duì)象挟冠,設(shè)置請(qǐng)求路徑

傳入NSURL創(chuàng)建一個(gè)NSURLRequest對(duì)象,設(shè)置請(qǐng)求頭和請(qǐng)求體

使用NSURLConnection發(fā)送請(qǐng)求


三.NSURLConnection發(fā)送請(qǐng)求

1.NSURLConnection常見(jiàn)的發(fā)送請(qǐng)求方法有以下幾種

同步請(qǐng)求

+ (NSData*)sendSynchronousRequest:(NSURLRequest*)requestreturningResponse:(NSURLResponse**)response error:(NSError**)error;

異步請(qǐng)求:根據(jù)對(duì)服務(wù)器返回?cái)?shù)據(jù)的處理方式的不同镣屹,又可以分為2種

a.block回調(diào)

+ (void)sendAsynchronousRequest:(NSURLRequest*)requestqueue:(NSOperationQueue*) queuecompletionHandler:(void(^)(NSURLResponse*response,NSData* data,NSError*connectionError))handler;

b.代理

- (id)initWithRequest:(NSURLRequest*)request delegate:(id)delegate;

+ (NSURLConnection*)connectionWithRequest:(NSURLRequest*)request delegate:(id)delegate;

- (id)initWithRequest:(NSURLRequest*)request delegate:(id)delegatestartImmediately:(BOOL)startImmediately;

c.在startImmediately=NO的情況下圃郊,需要調(diào)用start方法開(kāi)始發(fā)送請(qǐng)求

- (void)start;

注意:成為NSURLConnection的代理,最好遵守NSURLConnectionDataDelegate協(xié)議

四.NSURLConnectionDelegate

1.NSURLConnectionDataDelegate協(xié)議中的代理方法

a.開(kāi)始接收到服務(wù)器的響應(yīng)時(shí)調(diào)用

- (void)connection:(NSURLConnection*)connectiondidReceiveResponse:(NSURLResponse*)response;

b.接收到服務(wù)器返回的數(shù)據(jù)時(shí)調(diào)用(服務(wù)器返回的數(shù)據(jù)比較大時(shí)會(huì)調(diào)用多次)

- (void)connection:(NSURLConnection*)connectiondidReceiveData:(NSData*)data;

c.服務(wù)器返回的數(shù)據(jù)完全接收完畢后調(diào)用

- (void)connectionDidFinishLoading:(NSURLConnection*)connection;

d.請(qǐng)求出錯(cuò)時(shí)調(diào)用(比如請(qǐng)求超時(shí))

- (void)connection:(NSURLConnection*)connectiondidFailWithError:(NSError*)error;

四.NSMutableURLRequest

NSMutableURLRequest是NSURLRequest的子類(lèi)女蜈,常用方法有

1.設(shè)置請(qǐng)求超時(shí)等待時(shí)間(超過(guò)這個(gè)時(shí)間就算超時(shí),請(qǐng)求失斏瘛)

- (void)setTimeoutInterval:(NSTimeInterval)seconds;

2.設(shè)置請(qǐng)求方法(比如GET和POST)

- (void)setHTTPMethod:(NSString*)method;

3.設(shè)置請(qǐng)求體

- (void)setHTTPBody:(NSData*)data;

4.設(shè)置請(qǐng)求頭

- (void)setValue:(NSString*)valueforHTTPHeaderField:(NSString*)field;

五.創(chuàng)建GET和POST請(qǐng)求

創(chuàng)建GET請(qǐng)求

NSString*urlStr= [@"https://www.xxx.com/login?name=tbb&pwd=123444"stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];//有NSUTF8StringEncoding可用中文

NSURL*url= [NSURLURLWithString:urlStr];

NSMutableURLRequest*request = [NSMutableURLRequestrequestWithURL:url];

創(chuàng)建POST請(qǐng)求

NSString*urlStr =@"https://www.xxx.com/login";

NSURL*url = [NSURLURLWithString:urlStr];

NSMutableURLRequest*request = [NSMutableURLRequestrequestWithURL:url];

request.HTTPMethod=@"POST";

//請(qǐng)求體

NSString*bodyStr=@"name=tbb&pwd=123444";

request.HTTPBody= [bodyStrdataUsingEncoding:NSUTF8StringEncoding];

get和post基本使用Code:https://github.com/tangbinbinM/NSURLConnection-get-post.git

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末伪窖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子居兆,更是在濱河造成了極大的恐慌覆山,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泥栖,死亡現(xiàn)場(chǎng)離奇詭異簇宽,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)吧享,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)魏割,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人钢颂,你說(shuō)我怎么就攤上這事钞它。” “怎么了殊鞭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵遭垛,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我操灿,道長(zhǎng)锯仪,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任趾盐,我火速辦了婚禮庶喜,結(jié)果婚禮上小腊,老公的妹妹穿的比我還像新娘。我一直安慰自己溃卡,他們只是感情好溢豆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著瘸羡,像睡著了一般漩仙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上犹赖,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天队他,我揣著相機(jī)與錄音,去河邊找鬼峻村。 笑死麸折,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的粘昨。 我是一名探鬼主播垢啼,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼张肾!你這毒婦竟也來(lái)了芭析?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吞瞪,失蹤者是張志新(化名)和其女友劉穎馁启,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體芍秆,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惯疙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了妖啥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片霉颠。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖迹栓,靈堂內(nèi)的尸體忽然破棺而出掉分,到底是詐尸還是另有隱情,我是刑警寧澤克伊,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布酥郭,位于F島的核電站,受9級(jí)特大地震影響愿吹,放射性物質(zhì)發(fā)生泄漏不从。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一犁跪、第九天 我趴在偏房一處隱蔽的房頂上張望椿息。 院中可真熱鬧歹袁,春花似錦、人聲如沸寝优。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)乏矾。三九已至孟抗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钻心,已是汗流浹背凄硼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捷沸,地道東北人摊沉。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像痒给,于是被迫代替她去往敵國(guó)和親说墨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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