美文网首页
使用AFNetworking遇到的bug的决解方案

使用AFNetworking遇到的bug的决解方案

作者: 善男信Lee | 来源:发表于2017-02-07 21:53 被阅读24次

    阐述:

    在获取网络数据的时候,我们一般会使用到一个非常著名的框架:AFNetworking框架,可以说,这是作为iOS工程师必备的框架之一:

    这是一个非常强大的框架,对于发送异步请求来说,简直没有比这个更好用了,不过,在使用的过程中,我们可能遇到这样一个bug:如下

    连接出错 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}
    
    说明:

    由于数据很多,所以返回的请求体,和响应体部分我用省略号(......)代替了,但是,通过上面的返回的信息,我们不难看出,状态码200,而且也有一堆数据,但是在tableViewCell中就是没有显示,在最后的时候还出现"NSLocalizedDescription=Request failed: unacceptable content-type: text/html}" 这样一句话:

    分析:那个这个错误是什么原因造成的呢?

    因为manager有一个responseSerializer属性,它只设置了一些固定的解析格式.其中不包括text/html这种数据的格式.所以解析报错.

    我们来看一下AFNetworking解析格式的底层:

    self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil];
    

    通过底层,我们也可以看见,确实是没有text/html这种数据的格式,

    那如何解决这个问题呢?

    错误的解决方法如下:

    解决方法1: 直接给acceptableContentTypes属性添加类型

    着手解决:

    self.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"application/json", @"text/json" ,@"text/javascript", nil];
    
    ae6Njir.png!web.png

    解决之后:
    通过执行结果可以很明显的看得出,我们已经非常成功的获取到数据:

    当然有很多方法.

    相关文章

      网友评论

          本文标题:使用AFNetworking遇到的bug的决解方案

          本文链接:https://www.haomeiwen.com/subject/ihvmittx.html