闡述:
在獲取網(wǎng)絡(luò)數(shù)據(jù)的時候,我們一般會使用到一個非常著名的框架:AFNetworking框架,可以說,這是作為iOS工程師必備的框架之一:
這是一個非常強大的框架丐怯,對于發(fā)送異步請求來說,簡直沒有比這個更好用了翔横,不過读跷,在使用的過程中,我們可能遇到這樣一個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}
說明:
由于數(shù)據(jù)很多,所以返回的請求體,和響應(yīng)體部分我用省略號(......)代替了,但是,通過上面的返回的信息,我們不難看出,狀態(tài)碼200,而且也有一堆數(shù)據(jù),但是在tableViewCell中就是沒有顯示,在最后的時候還出現(xiàn)"NSLocalizedDescription=Request failed: unacceptable content-type: text/html}" 這樣一句話:
分析:那個這個錯誤是什么原因造成的呢?
因為manager有一個responseSerializer屬性,它只設(shè)置了一些固定的解析格式.其中不包括text/html這種數(shù)據(jù)的格式.所以解析報錯.
我們來看一下AFNetworking解析格式的底層:
self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil];
通過底層,我們也可以看見,確實是沒有text/html這種數(shù)據(jù)的格式,
那如何解決這個問題呢?
錯誤的解決方法如下:
解決方法1: 直接給acceptableContentTypes屬性添加類型
著手解決:
self.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"application/json", @"text/json" ,@"text/javascript", nil];
解決之后:
通過執(zhí)行結(jié)果可以很明顯的看得出,我們已經(jīng)非常成功的獲取到數(shù)據(jù):
當然有很多方法.