NSURLSession:安全
做用: 和NSURLConnection同样 一、负责发送请求,创建客户端和服务器的链接发送数据给服务器 二、并收集来自服务器的响应数据 步骤: 一、建立NSURLSession对象 二、利用NSURLSession建立任务(task) 三、执行任务 任务的类型: 一、NSURLSessionDataTask //普通的请求数据 二、NSURLSessionDownloadTask //下载数据 三、NSURLSessionUploadTask //上传数据
NSURLSessionDataTask(普通的请求数据)服务器
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //一、建立NSURLSession对象 NSURLSession *session = [NSURLSession sharedSession]; //二、利用NSURLSession建立任务(task) NSURL *url = [NSURL URLWithString:@"http://192.168.1.0:8080/login?username=LitterL&pwd=123"]; NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]); }]; //三、执行任务 [task resume]; }
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //一、建立NSURLSession对象 NSURLSession *session = [NSURLSession sharedSession]; //二、利用NSURLSession建立任务(task) NSURL *url = [NSURL URLWithString:@"http://192.168.1.0:8080/login"]; //建立请求对象里面包含请求体 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; request.HTTPMethod = @"POST"; request.HTTPBody = [@"username=LitterL&pwd=123" dataUsingEncoding:NSUTF8StringEncoding]; NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]); }]; //三、执行任务 [task resume]; }
补充网络
这里的话,结果我就不截图显示了,结果都是为同样的JSON数据session
-(void)download{ //建立URL NSURL *url = [NSURL URLWithString:@"http://upload.jianshu.io/users/upload_avatars/1232706/aa229f6d7f4d.png?imageMogr/thumbnail/90x90/quality/100"]; // 一、建立NSURLSession对象 NSURLSession *seesion = [NSURLSession sharedSession]; /* 二、利用NSURLSession建立任务(task) 第一个参数:须要下载的文件路径 第二个参数: location:下载好的临时文件路径 response:响应头 error:请求是否错误 */ NSURLSessionDownloadTask *task = [seesion downloadTaskWithURL:url completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) { //一、生成的Cace地址 NSString *cacepath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingString:[NSString stringWithFormat:@"/%@",response.suggestedFilename]]; //二、移动图片的存储地址 NSFileManager *manager = [NSFileManager defaultManager]; [manager moveItemAtURL:location toURL:[NSURL fileURLWithPath:cacepath] error:nil]; }]; // 三、执行任务 [task resume]; }
补充url
这里是从网络上面获取图片,方法自己是帮你写到了沙盒中的tmp文件夹中去,由于tmp是临时文件夹,处于不安全的,因此这里就把写入的图片移动到沙盒的Caches中去了,可是它的缺点为不能获取下载的进度,不能让界面实时更新,在后面的文章中,我会以Demo的形式展示出来。code
NSURLSessionUploadTaskorm
这里的话上传和进度下载会在后面抽取两篇文章出来,这里就不简约展现了对象
本章到此结束 欢迎各位码友随意转载并指正