在iOS7中,苹果介绍了新的API —— NSURLSession,这一系列的API是用来替代NSURLConnection的。
- 后台上传和下载
- 可以暂停和继续连接网络
- 保存配置
- 子类化和私有存储
- 改良的认证处理
- 丰富的代理模型
- 通过文件系统上传和下载
-
NSURLSessionDataTask:普通的数据传输,拿到的数据是NSData格式,你可以根据数据原本的格式进行相应的转换。
- NSURLSessionUploadTask:用于上传到网上的
-
NSURLSessionDownloadTask:用于下载,这个类与其它两个类有点不一样,这个类下载到的东西是直接写在一个临时文件中的,下载好之后它会给你一个临时文件的指针,然后自己手动保存。
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表示使用默认配置来创建session
3、小兵出马,小兵NSURLSessionDataTask是直接从session里创建出来的,等于session调用dataTaskWithRequest方法来完成这个网络任务。传入request,再写一个block好让数据下载好的时候可以直接处理数据。block里面有三个参数,data就是你要获取的数据,response返回一些网络响应的信息,error可以处理错误。
4、将response的类型转换为NSHTTPURLResponse,才能拿到status code
5、当statusCode等于200时,表示网络没问题
6、处理一下数据,把它打印到终端
7、当然,最重要的是,完成以上步骤时,不要忘记调用这个resume来开始下载。
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
- backgroundSessionConfiguration: —— 这个可以让你在后台进行下载,还有使用网络推送通知。
- defaultSessionConfiguration —— 这个是默认的配置,默认使用cache,cookie和credential等。
- ephemeralSessionConfiguration —— 不使用cache,cookie和credential等。