【发布时间】:2014-09-11 18:05:15
【问题描述】:
我想拥有带有基本 url 的会话管理器,而不是使用标准:
[AFHTTPSessionManager manager];
这是 100% 工作的,我已经测试过了,我正在尝试使用我自己的子类。
所以我继承了AFHTTPSessionManager 并创建了共享实例:
+ (MySessionManager *)sharedModel {
static MySessionManager *sharedInstance = nil;
@synchronized(self) {
if (sharedInstance == nil) {
sharedInstance = [[self alloc] initWithBaseURL:[NSURL URLWithString:kMyBaseURL]];
}
}
return sharedInstance;
}
- (id)initWithBaseURL:(NSURL *)url {
self = [super initWithBaseURL:url];
if (self) {
// see description below
}
return self;
}
我检查了AFHTTPSessionManager manager 的实现,它看起来像这样:
+ (instancetype)manager {
return [[[self class] alloc] initWithBaseURL:nil];
}
所以事实上我自己的子类应该以同样的方式工作..但它没有!
我得到状态码200 和Request failed: unacceptable content-type: text/html。但是我确定它是 json,因为使用 AFHTTPSessionManager manager 一切正常并显示为 text/json。怎么了,我做错了什么?
--- 编辑---
我还尝试在initWithBaseURL 中设置响应/请求序列化程序,但没有帮助。
self.requestSerializer = [AFHTTPRequestSerializer serializer];
self.responseSerializer = [AFJSONResponseSerializer serializer];
--- 编辑---
我也尝试过使用这些的任何配置,但一切都失败了(400、401)。
[self.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[self.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[self.responseSerializer setAcceptableContentTypes:[NSSet setWithObjects:@"application/json", nil]];
再次重申:当使用 manager sharedInstance 时完全没有问题 - 我处于成功块并且可以解析响应。
【问题讨论】:
标签: ios json serialization afnetworking-2