AFNetworking 2.0设置内容类型

时间:2014-04-08 21:23:03

标签: objective-c afnetworking-2

我基本上构建我的应用程序,就像您可以从AFNetworking 2.0 GitHub下载的AFNetworking示例。但是,在我使用AFNetworking 1.0制作客户端网络扩展类时,我必须指定initWithBaseURL,我可以设置可接受的内容类型。

在2.0中,似乎在示例中不再具有此实例方法。因此,当我使用网络服务时,我收到错误[1] (null) @"NSLocalizedDescription" : @"Request failed: unacceptable content-type: text/html"

我尝试了不使用AFClient类的方法,但是它可以工作,但是我想像示例一样进行设置,所以我可以更好地重用代码。

我在哪里可以设置contentType?此外,在2.0的示例中,它们具有块调用 + (NSURLSessionDataTask *)globalTimelinePostsWithBlock:(void (^)(NSArray *posts, NSError *error))block {返回类型为void之前。返回NSURLSessionDataTask的目的是什么?

2 个答案:

答案 0 :(得分:6)

您的回复的内容类型是text / html。

要获得它,请将AFHTTPSessionManager的响应序列化器设置为:

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];

或者你可以尝试

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

答案 1 :(得分:1)

想出来。

我在分配之前设置了responseSerializer ... -_-。你需要把它放在sharedClient类方法中。

 + (instancetype)sharedClient {
static AFMobileClient *_sharedClient = nil;
static dispatch_once_t onceToken;


//_sharedClient.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
dispatch_once(&onceToken, ^{

    _sharedClient = [[AFMobileClient alloc] initWithBaseURL:[NSURL URLWithString:BaseURLString]];
    //_sharedClient.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
    _sharedClient.responseSerializer = [AFHTTPResponseSerializer serializer];
});

return _sharedClient;
}