NSURLConnection類及相關類介紹
NSURL:請求地址
NSURLRequest:一個NSURLRequest對象就代表一個請求爬范。默認是GET請求
NSMutableURLRequest:NSURLRequest的子類,可以設置請求的方法等屬性
NSURLConnection:負責發(fā)送請求,建立客戶端和服務器的連接;發(fā)送數(shù)據(jù)給服務器,并收集來自服務器的響應數(shù)據(jù)。
NSURLConnection發(fā)送GET請求
同步請求
+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error;
異步請求
+ (void)sendAsynchronousRequest:(NSURLRequest*) request queue:(NSOperationQueue*) queue completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError)) handler;
-(void)sync
{
//GET,沒有請求體
//1.確定請求路徑
NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=520it&pwd=520it&type=JSON"];
//2.創(chuàng)建請求對象
//請求頭不需要設置(默認的請求頭)
//請求方法--->默認為GET
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url];
//3.發(fā)送請求
//真實類型:NSHTTPURLResponse
NSHTTPURLResponse *response = nil;
/*
第一個參數(shù):請求對象
第二個參數(shù):響應頭信息
第三個參數(shù):錯誤信息
返回值:響應體
*/
//該方法是阻塞的,即如果該方法沒有執(zhí)行完則后面的代碼將得不到執(zhí)行
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
}
-(void)async
{
//1.確定請求路徑
NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=520it&pwd=520it&type=JSON"];
//2.創(chuàng)建請求對象
//請求頭不需要設置(默認的請求頭)
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url];
//3.發(fā)送異步請求
/*
第一個參數(shù):請求對象
第二個參數(shù):隊列 決定代碼塊completionHandler的調(diào)用線程
第三個參數(shù):completionHandler 當請求完成(成功|失敗)的時候回調(diào)
response:響應頭
data:響應體
connectionError:錯誤信息
*/
// 此處的隊列決定下面Block代碼塊執(zhí)行所在的線程
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc]init] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
//4.解析數(shù)據(jù)
NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]);
NSHTTPURLResponse *res = (NSHTTPURLResponse *)response;
NSLog(@"%zd",res.statusCode);
NSLog(@"%@",[NSThread currentThread]);
}];
}