原文鏈接:http://www.jianshu.com/p/0a3820d6a951
著作權歸作者所有,轉載請聯繫作者獲得授權,並標註“簡書作者”。
背景:在上一個項目版本中一直使用AFNetworking2.0這個主流的網絡請求庫,AFHTTPRequestOperationManager從來未讓人操心過。在新版迭代中,突發奇想的去升級AFNetworking3.0,使用了AFHTTPSessionManger之後讓我操碎了心,如何操碎了新,讓我慢慢道來。
在使用AFNetworking v3.0之前,當然是要去了解一下AFNetworking v3.0的具體變化(當然,v2.0版本我也不是很熟,就知道AFHTTPRequestOperationManager而已)。簡要的總結說是AFHTTPRequestOperationManager這個類已經被棄用了,將使用AFHTTPSessionManger來取而代之,具體原因可以查看一下AFNetworking 3.0遷移指南。就聽大神的說,都換成了AFHTTPSessionManger,API也更新了一遍。用虛擬機跑了一遍主要的用到的API,主要是以下三個:
*[AFHTTPSessionManger GET: parameters: progress: success: failure:]
*[AFHTTPSessionManger POST: parameters: progress: success: failure:]
*[AFHTTPSessionManger POST: parameters: constructingBodyWithBlock: progress: success: failure:]
在iOS8.0以上版本是正常運行,即使在上傳圖片的時候出現response Code=-1016 "Request failed: unacceptable content-type: text/html"的問題也是用
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"]
或者是
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer]
輕鬆解決。
只是在iOS7.1的版本,使用前兩個沒有什麼問題,倒是上傳功能,出了response Code=-1011 "Request failed: length required (411)這個問題讓我糾結了一遍。後來查了一下AFNetworking的issue集,還真遇到一個,試了幾次終於可以使用了,下面貼下代碼: