簡介
`AFNetworking`是iOS開發網絡API中最經常使用的第三方庫,`github`中的`star`數充分說明了它在iOS開發中第三方庫中的江湖地位
github地址:[AFNetworking](https://github.com/AFNetworking/AFNetworking)
類介紹
NSURLSession 部分
AFURLSessionManager 基於NSURLSession,是對NSURLSession的封裝並進一步優化使用 其內部其實使用的仍是數據任務、上傳任務、下載任務
AFHTTPSessionManager 繼承於AFURLSessionManager 封裝了一些HTTP請求操做
Serialization 部分
Serialization部分主要是處理請求和響應的
AFURLRequestSerialization是負責請求的相關設置
AFURLRequestSerialization 負責管理請求對象中內容的構建,負責管理request的屬性等等一些東西 本類對象爲manager對象的一個屬性
AFHTTPRequestSerializer 負責管理HTTP請求對象相關的東西 manager默認使用的requestSerializer類型
AFJSONRequestSerializer 當請求參數爲JSON時 使用此類來設置請求
AFPropertyListRequestSerializer 當請求參數爲Plist時 使用此類來設置請求
AFURLResponseSerialization是負責管理響應的相關設置
AFHTTPResponseSerializer 負責管理響應對象中內容的構建,負責管理response的屬性等等一些東西 本類對象爲manager對象的一個屬性
AFJSONResponseSerializer 負責處理JSON manager對象默認使用的responseSerializer類型
AFXMLParserResponseSerializer 負責處理XML
AFPropertyListResponseSerializer 負責處理Plist
AFImageResponseSerializer 負責處理Image
AFCompoundResponseSerializer 混合型數據 data
Additional Functionality
AFNetworkReachabilityManager 網絡連通性
AFSecurityPolicy 加密相關
UIKit相關
GET
1. 訪問百度首頁
2. 訪問糯米API
接口頁面:http://apistore.baidu.com/apiworks/servicedetail/508.html
APIKey:794a5a140ecc24933911a42c37b5e773
> 響應序列化
> 請求序列化 添加請求頭
> 參數都是以字典或數組形式傳入
POST
1. 訪問api
普通請求接口:http://open.weibo.com/wiki/2/statuses/update
參數都是以字典或數組形式傳入
2. multi-part POST
Multi-Part請求接口:http://open.weibo.com/wiki/2/statuses/upload
參數:`2.00wzHcQGW4clHD3beba363fa0Tt21m`
`chengxinyuan4@sina.com` `chengxinyuan4`
Tips:
模擬HTTP請求工具
1. Chrome插件:postman
2. Mac App:[Paw](http://xz.cr173.com/soft2/pw.zip)
使用Cocoapods後import不提示
選擇target(就是左邊你的工程target)—— BuildSettings —— search Paths 下的 User Header Search Paths,點擊「+」號添加一項:而且輸入:「$(PODS_ROOT)」(沒有引號),選擇:recursive(會在相應的目錄遞歸搜索文件)
問題2
`Request failed: unacceptable content-type: text/plain text/html`
1. 在當前支持的響應序列化中添加支持不支持的類型
self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"添加", nil];
2. 切換類型
解釋:AF的響應序列化支持一下幾種,若是設置的爲其中一種,實際返回類型不是那一種,則會報上面錯誤unacceptable content-type
HTTP:返回data
JSON:返回數組或字典 只支持JSON
XML:返回NSXMLParser 只支持XML
Plist:返回數組或字典
Image:返回image對象
混合數據:返回data
問題3
```
error:Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set."
```
解釋:首先設置的響應類型是JSONSerializer,AF請求到數據後會解析數據,但咱們返回的數據不是JSON格式,是HTML因此AF無力了。。。javascript