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
這裏的話上傳和進度下載會在後面抽取兩篇文章出來,這裏就不簡約展現了對象
本章到此結束 歡迎各位碼友隨意轉載並指正