一、異步
1、GET請(qǐng)求(BLOCK)
//初始化一個(gè)session
NSURLSession *session = [NSURLSession sharedSession];
//通過(guò)地址得到一個(gè)url
NSString *urlStr = @"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20151101&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213";
NSURL *url = [NSURL URLWithString:urlStr];
//通過(guò)單例的session得到一個(gè)sessionTask,且通過(guò)URL初始化task 在block內(nèi)部可以直接對(duì)返回的數(shù)據(jù)進(jìn)行處理
NSURLSessionTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//請(qǐng)求之后會(huì)調(diào)用這個(gè)block
NSString *resultStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"resultStr->%@",resultStr);
}];
//啟動(dòng)人物,讓task開始之前執(zhí)行
[task resume];
2、POST請(qǐng)求(BLOCK)
NSString *urlString = @"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx";
NSURL *url = [NSURL URLWithString:urlString];
//初始化request 并配置httpBody httpMethod
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:30];
request.HTTPBody = [@"date=20151101&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213" dataUsingEncoding:NSUTF8StringEncoding];
request.HTTPMethod = @"POST";
//配置session 并讓task開始執(zhí)行
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSString *resultStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"resultStr->%@",resultStr);
}];
[task resume];
3、Delegate請(qǐng)求
#pragma mark - NSURLSessionDataDelegate代理方法
//服務(wù)器開始響應(yīng),客戶端將要接收數(shù)據(jù)
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response
completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler
{
//允許服務(wù)器開始響應(yīng)
completionHandler(NSURLSessionResponseAllow);
//? ? NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
self.mulData = [NSMutableData data];
}
//接收數(shù)據(jù)(會(huì)調(diào)用多次)
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data
{
//處理每次接受到得數(shù)據(jù)
//將每次接收到的data片段,拼接到_mulData
[_mulData appendData:data];
}
//數(shù)據(jù)接收完成,網(wǎng)絡(luò)請(qǐng)求成功
-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
{
NSLog(@"result->%@",[[NSString alloc]initWithData:_mulData encoding:NSUTF8StringEncoding]);
}