NSURLSession은 GET, POST, NSURLSession DataDelegate를 간단하게 사용합니다.

2592 단어

1. Get 요청

-(void)getSession{

//1. session 

NSURLSession *session = [NSURLSession sharedSession];

//2. 

NSURL *getUrl = [NSURL URLWithString:@""];

//3. url task, block 

NSURLSessionTask *task = [session dataTaskWithURL: getUrl completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

NSString *jsonString = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];

NSLog(@"%@",jsonString);

}];

//4. 

[task resume]; // task 

}

2. POST 요청

-(void)postSession
{
    // 
    NSURL *postUrl = [NSURL URLWithString:@""];
    
    // 
    NSMutableURLRequest *postRequest = [NSMutableURLRequest requestWithURL:postUrl];
    
    // 
    postRequest.HTTPMethod = @"POST";
    
    postRequest.HTTPBody = [@"" dataUsingEncoding:NSUTF8StringEncoding];
    
    
    // session 
    NSURLSession *session = [NSURLSession sharedSession];
    
    // url task, block 
    NSURLSessionTask *postTask = [session dataTaskWithURL:postUrl completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        NSString *jsonString = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
        NSLog(@"%@",jsonString);
    }];
    
    [postTask resume];  // 
    
}

3. NSURLSessionDataDelegate를 사용하여 네트워크 요청 처리

  • session의delegate는 읽기만 하기 때문에 다음과 같은 방법으로session을 만들고 에이전트를 설정해야 한다
  • //첫 번째 파라미터: 설정 파라미터
  • //세 번째 인자: NSOperationQueue, 대기열에 넣고 실행하기 요청
  •  //1. session 
        NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc]init]];
        
        //2. url task
        NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@""]]];
        //3. 
        [dataTask resume];
    

    NSURLSessionDataDelegate 구현
    - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask
    didReceiveResponse:(NSURLResponse *)response
     completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler
    {
        // 
        // , 
        completionHandler(NSURLSessionResponseAllow);
     
    }
    - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask
        didReceiveData:(NSData *)data
    {
        // 
        // 
    
    }
    

    심플한 NSURLSession 사용, 참고하세요.

    좋은 웹페이지 즐겨찾기