ASIHTTPRequest类库简介和使用说明
使用iOS SDK中的HTTP網絡請求API,相當的復雜,調用很繁瑣,ASIHTTPRequest就是一個對CFNetwork API進行了封裝,并且使用起來非常簡單的一套API,用Objective-C編寫,可以很好的應用在Mac OS X系統和iOS平臺的應用程序中。ASIHTTPRequest適用于基本的HTTP請求,和基于REST的服務之間的交互。
ASIHTTPRequest功能非常強大,主要特色如下:
- 通過簡單的接口,即可完成向服務端提交數據和從服務端獲取數據的工作。
- 下載的數據,可存儲到內存中或直接存儲到磁盤中。
- 能上傳本地文件到服務端。
- 可以方便的訪問和操作請求和返回的HTTP頭信息。
- 可以獲取到上傳或下載的進度信息,為應用程序提供更好的體驗。
- 支持上傳或下載隊列,并且可獲取隊列的進度信息。
- 支持基本、摘要和NTLM身份認證,在同一會話中授權憑證會自動維持,并且可以存儲在Keychain(Mac和iOS操作系統的密碼管理系統)。
- 支持Cookie
- 當應用(iOS 4+)在后臺運行時,請求可以繼續運行。
- 支持GZIP壓縮數據。
- 內置的ASIDownloadCache類,可以緩存請求返回的數據,這樣即使沒有網絡也可以返回緩存的數據結果。
- ASIWebPageRequest——可以下載完整的網頁,包括包含的網頁、樣式表、腳本等資源文件,并顯示在UIWebView/WebView中。任意大小的頁面都可以無限期緩存,這樣即使沒有網絡也可以離線瀏覽。
- 支持客戶端證書
- 支持通過代理發起HTTP請求
- 支持帶寬限制。在iOS平臺,可以根據當前網絡情況來自動決定是否限制帶寬,例如當使用WWAN(GPRS/Edge/3G)網絡時限制,而當使用WIFI時不做任何限制。
- 支持斷點續傳
- 支持同步和異步請求
在項目中簡單配置即可使用ASIHTTPRequest:
可以通過以下兩種方式往一個Xcode項目中添加第三方類庫文件:
1. 拖放到項目中。如果類庫文件沒有拷貝到項目文件目錄,則拷貝時要選中”Copy items into destination group's folder“的復選框。?
2. 在Xcode中,右鍵點擊項目文件彈出菜單中選擇”Add Files to XXX Project“菜單,在文件瀏覽對話框中選擇要添加的文件到項目中。同樣地,如果類庫文件沒有拷貝到項目文件目錄,則拷貝時要選中”Copy items into destination group's folder“的復選框。
根據這兩種方式之一,添加ASIHTTPRequest相關文件到Xcode項目中。然后進行鏈接類庫的操作,這一步很重要:
?1. 選擇項目
?2. 選擇目標Target
?3. 跳轉到”Build Phases“標簽項
?4. 展開”Link Binary With Libraries“分組
?5. 點擊”+“添加類庫
?
?6. 從列表中選擇CFNetwork.framework,然后點擊”Add“按鈕。
?7. 按照上一步方法添加:SystemConfiguration.framework,MobileCoreServices.framework,CoreGraphics.framework和libz.1.2.3.dylib這幾個類庫。
?8. 添加完后,可以將添加好的類庫拖到Xcode項目的Frameworks目錄下。
?使用說明:
在完成上述正確安裝配置后,在需要用到ASIHTTPRequest的代碼文件頭部,引入:
#import "ASIHTTPRequest.h"這句即可使用它的相關類。
示例:創建一個同步請求
這是ASIHTTPRequest最簡單的一種使用模式,發送startSynchronous消息后即開始在同一線程中執行HTTP請求,線程將一直等待直到請求結束(請求成功或者失敗)。通過檢查error屬性可以判斷請求是否成功或者有錯誤發生。 要獲取返回的文本信息,調用responseString方法。如果下載的是二進制文件,如圖片、MP3,則調用responseData方法,可以得到一個NSData對象。代碼如下:
一般情況下,應該優先使用異步請求來代替同步請求,當在主線程中使用ASIHTTPRequest同步請求,應用程序的界面會鎖定,無法進行任何操作,直到請求完成。
示例:創建一個異步請求
異步請求是在后臺線程中運行,當請求執行完后再通知調用的線程。這樣不會導致主線程進行網絡請求時,界面被鎖定等情況。
關于Xcode4.2下編譯”ASIHTTPRequest“開源項目的代碼時,出現”Declaration of ’struct sockaddr_in' will not be visible outside of this function“錯誤的解決方法:
引入頭文件:#import <netinet/in.h>
總結
以上是生活随笔為你收集整理的ASIHTTPRequest类库简介和使用说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Lesson 16.1416.15 Go
- 下一篇: iOS开源收集