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