标签:
1.NSURLSession有三种工作模式
(1)defaultSessionConfiguration(默认):使用的是基于磁盘缓存的持久化策略,Cache,Cookie。
(2)ephemeralSessionConfiguration(短暂):该模式不使用磁盘保存任何数据。所有和会话相关的caches,证书,cookies等都被保存在RAM中,因此当程序使会话无效,这些缓存的数据就会被自动清空。
(3)backgroundSessionConfigurationWithIdentifier:(NSString *)identifier(后台):在后台完成上传和下载,在创建Configuration对象的时候需要提供一个NSString类型的标识。
我们可以设置NSURLSessionConfiguration的相关属性来对NSURLSession进行配置,如果不对NSURLSession进行配置,采用默认的工作模式。
下面上代码:
- (void)configSession { //1.构造URL NSURL *url = [NSURL URLWithString:@"http://news-at.zhihu.com/api/3/news/latest"]; //2.配置NSURLSessionConfiguration NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; //允许使用蜂窝网络 config.allowsCellularAccess = YES; //设置超时时间(秒) config.timeoutIntervalForRequest = 10; //3.创建session对象时使用config进行配置 NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:[NSOperationQueue mainQueue]]; //4.创建网络任务 NSURLSessionDataTask *dataTask = [session dataTaskWithURL:url]; //5.发送网络请求 [dataTask resume]; }
发送网络请求后要在代理里面进行相关操作
这里代理遵守的协议有很多种可以选择,根据网络任务(Task)的不同遵守不同的协议,本例遵守<NSURLSessionDataDelegate>协议
#pragma mark - NSURLSessionDataDelegate //监听网络传输完成的事件 - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(nullable NSError *)error { NSLog(@"网络传输完成"); } //收到了响应包中的状态码以及响应头数据,只会被调用一次 - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; NSLog(@"响应状态码:%ld", httpResponse.statusCode); //NSURLSessionResponseAllow:继续传输响应体数据 //NSURLSessionResponseCancel:取消当前传输,相当于task cancel completionHandler(NSURLSessionResponseAllow); } //收到响应体的数据--此方法可能会被调用多次 - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { //如果要获取到完整的数据要创建一个全局的NSMutableData对每次接收到的data进行拼接 NSLog(@"每次接收到数据包的长度:%li", data.length); }
网络编程(二)NSURLSessionConfiguration
标签:
原文地址:http://www.cnblogs.com/wlll/p/5167614.html