標籤:ios afnetworking 網路訪問
一AFNetworking簡介 AFNetworking是一個在IOS開發中使用非常多網路開源庫,適用於iOS以及Mac OS X. 它構建於在(apple ios開發文檔)NSURLConnection, NSOperation,以及其他熟悉的Foundation技術之上。它擁有良好的架構,豐富的api,以及模組化構建方式,使得使用起來非常輕鬆. AFURLConnectionOperation:繼承自 NSOperation 實現了NSURLConnection 的代理方法.AFHTTPRequestOperation: 繼承自 AFURLConnectionOperation的子類,當request請求使用的協議為HTTP和HTTPS時使用,它封裝了用於決定request是否成功的狀態代碼和內容類型.AFJSONRequestOperation: 繼承自AFHTTPRequestOperation,用於下載和處理json response資料.AFXMLRequestOperation:繼承自AFHTTPRequestOperation,用於下載和處理xml response資料.AFPropertyListRequestOperation:繼承自AFHTTPRequestOperation,用於下載和處理property list response資料.AFHTTPClient:是一個封裝了基於http協議的網路應用程式的公用交流模式.包含 1.發起基於根路徑的使用基本的url相關路徑來只做request2.為request自動添加設定http headers.3.使用http 基礎認證或者OAuth來驗證request4.為由client製作的requests管理一個NSOperationQueue5.從NSDictionary產生一個查詢字串或http bodies.6.從request中構建多組件7.自動的解析http response資料為相應的表現資料8.在網路可達性測試用監控和響應變化.
註: 官方使用文檔說明: http://cocoadocs.org/docsets/AFNetworking/1.3.0/
二 載入到開發環境中
1.下載AFNetworking https://github.com/AFNetworking/AFNetworking
2.解壓後將AFNetWorking檔案夾拖入項目工程中去
3.添加SystemConfiguration和MobileCoreServices 架構
4.在先行編譯標頭檔中添加相關的標頭檔
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <SystemConfiguration/SystemConfiguration.h>
#import <MobileCoreServices/MobileCoreServices.h>
#endif
注意:該類庫需要在 ARC 的環境下 ,在非ARC 的工程中 ,添加 -fobjc-arc
四 使用代碼
詳見: https://github.com/ZhangzheBJUT/IOSProject/tree/master/NetworkTool ZZUtilNetWork.h和ZZUtilNetWork.m是對AFNetworking使用簡單封裝。
五 小結 AFNetworking的基礎部分是 AFURLConnectionOperation,它是一個 NSOperation subclass,網路部分由 NSURLConnection 完成,實現了 NSURLConnection 相關的代理方法,然後利用 NSOperation 的 state (isReady→isExecuting→isFinished) 變化來進行網路控制。網路請求是在一個指定的線程(networkRequestThread)完成。
AFURLConnectionOperation 是一個很純粹的網路請求 operation,可以對他進行 start/cancel/pause/resume 操作,可以擷取對應的 NSURLRequest 和 NSURLResponse 資料。支援 NSInputStream/NSOutputStream,提供了 uploadPress 和 downloadProgress 以方便其他使用。
AFHTTPRequestOperation 是 AFURLConnectionOperation 的子類,針對 HTTP+HTTPS 協議做了一層封裝,比如 statusCode、Content-Type 等,添加了請求成功和失敗的回調 block,提供了 addAcceptableContentTypes: 以方便上層使用。