1. NSURLSession下载网络任务
#pragma mark - NSURLSession下载任务
- (void)test1 {
// 1. 创建url
NSURL *url = [NSURL URLWithString:Base_URL];
// 2. 创建网络请求
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// 2.5 创建会话配置器
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration ephemeralSessionConfiguration];
// 3 .创建网络会话
NSURLSession *urlSession = [NSURLSession sessionWithConfiguration:sessionConfiguration];
// 3. 创建下载任务
NSURLSessionDownloadTask *downloadTask = [urlSession downloadTaskWithRequest:request completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
NSData *data = [[NSData alloc] initWithContentsOfURL:location];
UIImage *image = [[UIImage alloc] initWithData:data];
// 回到主线程中搭建UI
// 1. 方式1.
[self.imageView performSelectorOnMainThread:@selector(setImage:) withObject:image waitUntilDone:NO];
// 2. 方式2.
// dispatch_sync(dispatch_get_main_queue(), ^{
//
// self.imageView.image = image;
// });
}];
// 4. 下载不挂起 执行
[downloadTask resume];
}
AFURLSessionManager和NSURLSession配合使用下载任务,永久存储路径
#pragma mark - AFURLSessionManager和NSURLSession配合下载任务
- (void)test2 {
// 1.创建URL
NSURL *url = [NSURL URLWithString:Base_URL];
// 2.创建网络请求
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// 2.5 创建网络会话配置器
NSURLSessionConfiguration *defaultConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
// 3.AFURLSessionManager
AFURLSessionManager *sessionManager = [[AFURLSessionManager alloc] initWithSessionConfiguration:defaultConfiguration];
// 4.创建下载任务
NSURLSessionDownloadTask *downloadTask = [sessionManager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
// 通过AFURLSessionManager 创建永久的存储路径 在document下面
NSURL *downloadURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
return [downloadURL URLByAppendingPathComponent:[response suggestedFilename]];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
// 以下UI搭建 默认会在主线程中执行
NSData *data = [NSData dataWithContentsOfURL:filePath];
UIImage *image = [UIImage imageWithData:data];
self.imageView.image = image;
}];
//5。执行下载任务
[downloadTask resume];
}