在使用AFNetworking 3.0时出现了这个问题:
Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/plain"
以下为代码展示
1 Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/plain"
或者
1 Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/html"
出现这个错误的原因是服务器返回给客户端的内容类型是 text/plain 或者是 text/html 格式,AFNetworking无法接受这些内容类型。
无法接受什么类型,就设置或添加这个类型。这里以 text/plain 为例。
解决办法1:设置AFN默认解析类型
1 AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
1 mgr.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain", nil];
此方法的缺点是,设置 text/plain 为接受类型以后,就不能完成对 text/json 等其他类型的解析。
解决办法2:将 text/plain 和 text/html 格式加入到AFN的源文件AFURLResponseSerialization.m中。
修改文件第228行
1 self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil];
为
1 self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/plain", nil];
或为
1 self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", nil];
添加一个无法接受的内容类型就可以解决。