網絡篇-NSURLSession介紹

NSURLSession:安全

做用:
    和NSURLConnection同樣
    一、負責發送請求,創建客戶端和服務器的鏈接發送數據給服務器
    二、並收集來自服務器的響應數據
步驟:
    一、建立NSURLSession對象
    二、利用NSURLSession建立任務(task)
    三、執行任務
任務的類型:
    一、NSURLSessionDataTask         //普通的請求數據
    二、NSURLSessionDownloadTask     //下載數據
    三、NSURLSessionUploadTask       //上傳數據
  • NSURLSessionDataTask(普通的請求數據)服務器

    • GET 請求
    - (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];
    }
    • POST 請求
    - (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

  • NSURLSessionDownloadTask:(下載圖片)
    • 代碼
    -(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

    這裏的話上傳和進度下載會在後面抽取兩篇文章出來,這裏就不簡約展現了對象

    本章到此結束
             歡迎各位碼友隨意轉載並指正
相關文章
相關標籤/搜索