Ios AF2自定义会话管理器
我希望会话管理器具有基本url,而不是使用标准:Ios AF2自定义会话管理器,ios,json,serialization,afnetworking-2,Ios,Json,Serialization,Afnetworking 2,我希望会话管理器具有基本url,而不是使用标准: [AFHTTPSessionManager manager]; 这是100%的工作,我已经测试过了,我正在尝试我自己的子类 因此,我对AFHTTPSessionManager进行了子类化,并创建了共享实例: + (MySessionManager *)sharedModel { static MySessionManager *sharedInstance = nil; @synchronized(self) {
[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的实现,它如下所示:
+ (instancetype)manager {
return [[[self class] alloc] initWithBaseURL:nil];
}
所以事实上,我自己的子类也应该以同样的方式工作。。但事实并非如此
我获取状态代码200,请求失败:不可接受的内容类型:text/html。但是我确信它是json,因为使用AFHTTPSessionManager,一切都可以正常工作,并显示为text/json。怎么了,我做错了什么
--编辑--
我还尝试在initWithBaseURL中设置响应/请求序列化程序,但没有帮助
self.requestSerializer = [AFHTTPRequestSerializer serializer];
self.responseSerializer = [AFJSONResponseSerializer serializer];
--编辑--
我也尝试过使用这些配置,但都失败了400401
[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时,根本没有问题-我处于成功区,可以解析响应。好吧,整个问题是kMyBaseURL是:
#define kMGBaseURL @"http://example.com/api"
而不是
#define kMGBaseURL @"http://example.com/api/"
后来我把链接当作@/某物而不是@某物