一.常用類(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