【发布时间】:2015-04-10 22:12:03
【问题描述】:
我根据推荐的 iOS 8 最佳实践对 AFHTTPSessionManager 进行了子类化(代替了我之前使用的 AFHTTPOperationManager)。
我可以从task 中获取NSHTTPURLResponse(除了没有正文,只有标题),回调返回序列化的responseObject,这很好。
有时我需要将响应记录为字符串或将其显示在文本字段中 - 似乎没有办法在本机使用 SessionManager 来执行此操作? OperationManager 允许您将原始响应引用为 NSString:
operation.responseString;
我想我可以对序列化的 requestObject 进行字符串化,但这似乎有很多不必要的开销,并且如果响应对象是无效的 JSON 也无济于事。
这是我的子类单例:
@implementation MyAFHTTPSessionManager
+ (instancetype)sharedManager {
static id instance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[self alloc] init];
});
return instance;
}
然后制作一个简单的 GET(我已将其添加到块方法中),我可以这样做:
[[MyAFHTTPSessionManager sharedManager] GET:_url parameters:queryParams success:^(NSURLSessionDataTask *task, id responseObject) {
completion(YES, task, responseObject, nil);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
completion(NO, task, nil, error);
}];
【问题讨论】:
-
不幸的是,这是基于
NSURLSession的 AFNetworking API 的限制之一。这就是为什么我仍然使用NSURLConnection版本,除了它基于NSOperation。
标签: ios objective-c afnetworking-2