How to return NSData from NSURLSessionDataTask completion handler

后端 未结 2 416
遇见更好的自我
遇见更好的自我 2020-12-31 16:58

I am trying to make a simple class that I can use to call a post web service.

Everything is working perfectly except that I am not able to return the NSData

2条回答
  •  清酒与你
    2020-12-31 17:43

    You should use a block method.

    First define a block

    typedef void (^OnComplete) (NSData *data);
    

    Use the following method

    + (void)postCall:(NSDictionary *)parameters fromURL:(NSString *)url withBlock:(OnComplete)block; {
    
         NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
            NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration];
            NSMutableArray *pairs = [[NSMutableArray alloc]init];
            for(NSString *key in parameters){
                [pairs addObject:[NSString stringWithFormat:@"%@=%@", key, parameters[key]]];
            }
            NSString *requestParameters = [pairs componentsJoinedByString:@"&"];
            NSURL *myURL = [NSURL URLWithString:url];
            NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:myURL];
            [urlRequest setHTTPMethod:@"POST"];
            [urlRequest setHTTPBody:[requestParameters dataUsingEncoding:NSUTF8StringEncoding]];
            NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
                block(data);
            }];
            [dataTask resume];
       }
    

提交回复
热议问题