连接出错 Error Domain=com.alamofire.error.serialization.response Code=-1016
"Request failed: unacceptable content-type: text/html" UserInfo=
{com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x7f93fad1c4b0>
{ URL: http://c.m.163.com/nc/article/headline/T1348647853363/0-140.html }
{ status code: 200, headers { .....}
......
22222c22 626f6172 64696422 3a226e65 77735f73 68656875 69375f62 6273222c 22707469 6d65223a 22323031 362d3033 2d303320 31313a30 323a3435 227d5d7d>,
NSLocalizedDescription=Request failed: unacceptable content-type: text/html}
原因:
通过这句话:unacceptable content-type: text/html,我们可以看出报错原因:是不接收的内容类型,也就是说AFNetworking框架不支持解析text/html这种格式. 那么怎样解决呢?
方案如下:
第一种:直接给acceptableContentTypes属性添加类型
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManagermanager];
// 添加 text/html 类型到可接收内容类型中
mgr.responseSerializer.acceptableContentTypes= [NSSetsetWithObjects:@"text/html", nil];
第二种:直接到框架的源代码中添加类型
self.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"application/json", @"text/json" ,@"text/javascript", nil];
第三种:扩展框架自定义一个manager ,拓展一个类型。
@interface DXHTTPManager : AFHTTPSessionManager
在.m文件中
+ (instancetype)manager {
DXHTTPManager *mgr = [super manager];
// 创建NSMutableSet对象
NSMutableSet *newSet = [NSMutableSet set];
// 添加我们需要的类型
newSet.set = mgr.responseSerializer.acceptableContentTypes;
[newSet addObject:@"text/html"];
// 重写给 acceptableContentTypes赋值
mgr.responseSerializer.acceptableContentTypes = newSet;
return mgr;
}
在发送请求的时候,使用我们自定义的类来发送请求
[[DXHTTPManager manager] GET:@"http://...."
parameters:nil success:^(AFHTTPRequestOperation *operation, NSDictionary * responseObject)
{
NSLog(@"请求成功 -- %@",responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"请求失败 -- %@",error);
}];
参考了:[使用AFNetworking框架遇到的一个经典bug的解决方案]https://www.jianshu.com/p/212a128c9a33