我基本上构建我的应用程序,就像您可以从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
的目的是什么?
答案 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;
}