在iOS7中,苹果介绍了新的API —— NSURLSession,这一系列的API是用来替代NSURLConnection的。
NSURLSession带来了这些新的好处: 后台上传和下载 可以暂停和继续连接网络 保存配置 子类化和私有存储 改良的认证处理 丰富的代理模型 通过文件系统上传和下载 作为一个iOS初学者的我,就不理NSURLConnection了,直接上NSURLSession

1 - (id)initWithCoder:(NSCoder *)aDecoder 2 { 3 self = [super initWithCoder:aDecoder]; 4 NSLog(@'hello initWithCoder'); 5 //1 6 NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@'https://www.okcoin.com/api/ticker.do']]; 7 //2 8 NSURLSession *session = [NSURLSession sharedSession]; 9 //3 10 NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 11 if (!error) { 12 //4 13 NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; 14 //5 15 if (httpResponse.statusCode == 200) { 16 //6 17 NSString *string = [[NSString alloc] initWithData:data encoding:NSStringEncodingConversionAllowLossy]; 18 NSLog(@'%@',string); 19 } 20 } 21 }]; 22 //7 23 [dataTask resume]; 24 25 return self; 26 }
1、将URL打包成request
2、创建session,调用sharedSession表示使用默认配置来创建session3、小兵出马,小兵NSURLSessionDataTask是直接从session里创建出来的,等于session调用dataTaskWithRequest方法来完成这个网络任务。传入request,再写一个block好让数据下载好的时候可以直接处理数据。block里面有三个参数,data就是你要获取的数据,response返回一些网络响应的信息,error可以处理错误。4、将response的类型转换为NSHTTPURLResponse,才能拿到status code5、当statusCode等于200时,表示网络没问题6、处理一下数据,把它打印到终端7、当然,最重要的是,完成以上步骤时,不要忘记调用这个resume来开始下载。由于storyboard会自己调用initWithCoder:这个方法,所以我们直接把代码写在这个方法里。 运行程序,就可以看到终端上显示 2014-01-01 11:45:55.256 LearnNSURLSession[829:541b] {'ticker':{'buy':'4376.99','high':'4388.02','last':'4376.99','low':'4246.0','sell':'4377.0','vol':'3874.2808'}} OK,返回的是正确的数据。 当然,上面代码为了省事,没用NSURLSessionConfiguration,其实可以把NSURLSession *session = [NSURLSession sharedSession];
这一行代码换成
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
NSURLSessionConfiguration就是这样用的,当然,这个小程序暂时还用不着设置其他配置。 不过很有必要介绍一下NSURLSessionConfiguration的三个基本配置: backgroundSessionConfiguration: —— 这个可以让你在后台进行下载,还有使用网络推送通知。defaultSessionConfiguration —— 这个是默认的配置,默认使用cache,cookie和credential等。 ephemeralSessionConfiguration —— 不使用cache,cookie和credential等。