2014-11-13 3 views
3

С ASIHTTPRequest устарел, я переношу свой код для использования NSURLSession на основе связи с сервером. В настоящее время я использую NSDictionary«userInfo» свойство ASIHTTPRequest для отправки дополнительной информации о пользователе. Описание «userInfo» в документации ASIHTTPRequest «Пользовательская информация пользователя, связанная с запросом (не отправляется на сервер)». После обработки запроса я возвращаю этот объект «userInfo» из объекта запроса и принимает соответствующие меры. Мой ASIHTTPRequest пример кодаДобавить информацию пользователя по запросу

Запрос:

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:@"http://www.google.com"]; 
[request setDelegate:self]; 
NSDictionary *userInfo = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:1] forKey:@"requestCount"]; 
[request setUserInfo:userInfo]; 

Я хочу добиться такой же функциональности через NSURLSession, как я могу это сделать?

NSURLSession пример кода:

NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration]; 
NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: nil delegateQueue: self.queue]; 

NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:url]; 
[urlRequest setTimeoutInterval:timeOutSeconds]; 

NSURLSessionDataTask * dataTask =[defaultSession dataTaskWithRequest:urlRequest 
                completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
                 NSLog(@"Response:%@ %@\n", response, error); 
                 if(error == nil) 
                 { 
                  NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; 
                  NSLog(@"Data = %@",text); 

                  } 
                 } 

                }]; 

[dataTask resume]; 

ответ

0

Поскольку вы используете обработчик завершения, так что вы можете использовать переменную блок, попробуйте ниже код:

NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration]; 
    NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: nil delegateQueue: self.queue]; 

    NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:url]; 
[urlRequest setTimeoutInterval:timeOutSeconds]; 

    __block NSDictionary *userInfo = [NSDictionary dictionaryWithObjectAndKeys...........];** 

    NSURLSessionDataTask * dataTask =[defaultSession dataTaskWithRequest:urlRequest 
                completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
                 NSLog(@"Response:%@ %@\n", response, error); 

                 NSLog(@"UserInfo: %@", userInfo); 
                 if(error == nil) 
                 { 
                  NSString * text = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; 
                  NSLog(@"Data = %@",text); 

                  } 
                 } 

                }]; 

    [dataTask resume]; 
+0

Это worked..thank вас. – user2179059

0

Чистейший путь является подкласс NSURLRequest и добавить нужное свойство - будь то тег, или USERINFO и использовать его так же, как вы привыкли с ASIHTTP рамок.

Смежные вопросы