iOS 웹편 - NSURLSession 소개

3360 단어
NSURLSession:
 :
     NSURLConnection 
    1、 , 
    2、 
 :
    1、 NSURLSession 
    2、 NSURLSession (task)
    3、 
 :
    1、NSURLSessionDataTask         // 
    2、NSURLSessionDownloadTask     // 
    3、NSURLSessionUploadTask       // 
  • NSURLSessionDataTask(일반 요청 데이터)
  • GET 요청
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
        //1、 NSURLSession 
        NSURLSession *session = [NSURLSession sharedSession];
        //2、 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]);
        }];
        //3、 
        [task resume];
    }
    
  • POST 요청
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
        //1、 NSURLSession 
        NSURLSession *session = [NSURLSession sharedSession];
        //2、 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]);
        }];
        //3、 
        [task resume];
    }
    
  • 여기를 보충하면 캡처를 하지 않고 결과가 똑같은 JSON 데이터입니다

  • NSURLSessionDownloadTask:(다운로드 이미지)
  • 코드
  • -(void)download{
        // URL
        NSURL *url = [NSURL URLWithString:@"http://upload.jianshu.io/users/upload_avatars/1232706/aa229f6d7f4d.png?imageMogr/thumbnail/90x90/quality/100"];
        //    1、 NSURLSession 
        NSURLSession *seesion = [NSURLSession sharedSession];
        /*    2、 NSURLSession (task)
                 : 
                 :
                    location: 
                    response: 
                    error: 
        */
        NSURLSessionDownloadTask *task = [seesion downloadTaskWithURL:url completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            //1、 Cace 
            NSString *cacepath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingString:response.suggestedFilename];
            //2、 
            NSFileManager *manager = [NSFileManager defaultManager];
            [manager moveItemAtURL:location toURL:[NSURL fileURLWithPath:cacepath] error:nil];
    
        }];
        //    3、 
        [task resume];
    }
    
  • 여기에 추가된 것은 인터넷에서 그림을 얻는 것입니다. 방법 자체는 샌드박스에 있는 tmp 폴더에 쓰는 것을 도와줍니다. tmp는 임시 폴더이기 때문에 안전하지 않기 때문에 여기에 쓴 그림을 샌드박스의 Caches로 옮겼습니다. 그러나 다운로드의 진도를 얻지 못하고 인터페이스를 실시간으로 업데이트할 수 없다는 단점이 있습니다. 뒤에 있는 글에서 저는 데모의 형식으로 보여 드리겠습니다

  • NSURLSession Upload Task 여기서는 업로드와 진도 다운로드 후 두 개의 글을 뽑아서 보여줍니다. 여기서는 간단명료하지 않습니다
                    
              
  • 좋은 웹페이지 즐겨찾기