由于不推荐ASIHTTPRequest
,我正在迁移我的代码以使用基于NSURLSession
的服务器通信。目前,我使用NSDictionary
的{{1}} " userInfo" 属性来发送其他用户信息。 ASIHTTPRequest
文档中" userInfo" 的说明是"与请求关联的自定义用户信息(未发送到服务器)"。
处理完请求后,我会从请求对象中重新获取此" userInfo" 对象,并相应地执行操作。
我的ASIHTTPRequest
代码示例是
请求:
ASIHTTPRequest
我想通过NSURLSession实现相同的功能,我该怎么做?
NSURLSession代码示例:
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:@"http://www.google.com"];
[request setDelegate:self];
NSDictionary *userInfo = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:1] forKey:@"requestCount"];
[request setUserInfo:userInfo];
答案 0 :(得分:0)
最简洁的方法是继承NSURLRequest
并添加所需的属性 - 无论是标记,还是userInfo,并以与ASIHTTP
框架相同的方式使用它。
答案 1 :(得分: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];