ASIHTTPRequest類庫簡介和使用說明
官方網站: http://allseeing-i.com/ASIHTTPRequest/ 。可以從上面下載到最新原始碼,以及獲取到相關的資料。
使用iOS SDK中的HTTP網路請求API,相當的複雜,呼叫很繁瑣,ASIHTTPRequest就是一個對CFNetwork API進行了封裝,並且使用起來非常簡單的一套API,用Objective-C編寫,可以很好的應用在Mac OS X系統和iOS平臺的應用程式中。ASIHTTPRequest適用於基本的HTTP請求,和基於REST的服務之間的互動。
ASIHTTPRequest功能很強大,主要特色如下:
- l 通過簡單的介面,即可完成向服務端提交資料和從服務端獲取資料的工作
- l 下載的資料,可儲存到記憶體中或直接儲存到磁碟中
- l 能上傳本地檔案到服務端
- l 可以方便的訪問和操作請求和返回的Http頭資訊
- l 可以獲取到上傳或下載的進度資訊,為應用程式提供更好的體驗
- l 支援上傳或下載佇列,並且可獲取佇列的進度資訊
- l 支援基本、摘要和NTLM身份認證,在同一會話中授權憑證會自動維持,並且可以儲存在Keychain(Mac和iOS作業系統的密碼管理系統)中
- l 支援Cookie
- l 當應用(iOS 4+)在後臺執行時,請求可以繼續執行
- l 支援GZIP壓縮資料
- l 內建的ASIDownloadCache類,可以快取請求返回的資料,這樣即使沒有網路也可以返回已經快取的資料結果
- l ASIWebPageRequest –可以下載完整的網頁,包括包含的網頁、樣式表、指令碼等資原始檔,並顯示在UIWebView /WebView中。任意大小的頁面都可以無限期快取,這樣即使沒有網路也可以離線瀏覽
- l 支援客戶端證書
- l 支援通過代理髮起Http請求
- l 支援頻寬限制。在iOS平臺,可以根據當前網路情況來自動決定是否限制頻寬,例如當使用WWAN(GPRS/Edge/3G)網路時限制,而當使用WIFI時不做任何限制
- l 支援斷點續傳
- l 支援同步和非同步請求
2.1.1安裝說明
如果想在iOS專案中使用ASIHTTPRequest,需要在專案中進行簡單的配置,步驟如下:
1) 新增檔案
往一個Xcode專案中新增第三方類庫檔案,有兩種方式:
1. 第一種方式,在Finder中開啟需要新增到檔案或資料夾,在Xcode中開啟要新增檔案的專案,然後選中要新增的檔案或資料夾,將它從Finder中拖到Xcode中,然後釋放。在彈出的對話方塊中,如果檔案已經拷貝到了專案檔案目錄中,則不需要選中“Copy items”的核取方塊;如果檔案沒有拷貝到專案檔案目錄,就需要選中“Copy items”的核取方塊,這樣Xcode會自動把檔案複製到專案檔案目錄下。如下圖所示:
2. 第二種方式,在Xcode中,在要新增檔案的分組下點右鍵,選中“Add Files to “My Project”…”選單,在彈出的檔案瀏覽對話方塊中選中要新增到檔案或資料夾。如果要新增檔案已經拷貝到了專案檔案目錄中,則不需要選中“Copy items”的核取方塊;如果檔案沒有拷貝到專案檔案目錄,就需要選中“Copy items”的核取方塊,這樣Xcode會自動把檔案複製到專案檔案目錄下。如下圖所示:
根據上面的說明,新增ASIHTTPRequest相關檔案到Xcode專案中,所需檔案列表如下:
ASIHTTPRequestConfig.h
ASIHTTPRequestDelegate.h
ASIProgressDelegate.h
ASICacheDelegate.h
ASIHTTPRequest.h
ASIHTTPRequest.m
ASIDataCompressor.h
ASIDataCompressor.m
ASIDataDecompressor.h
ASIDataDecompressor.m
ASIFormDataRequest.h
ASIInputStream.h
ASIInputStream.m
ASIFormDataRequest.m
ASINetworkQueue.h
ASINetworkQueue.m
ASIDownloadCache.h
ASIDownloadCache.m
ASIAuthenticationDialog.h
ASIAuthenticationDialog.m
Reachability.h (在原始碼的 External/Reachability 目錄下)
Reachability.m (在原始碼的 External/Reachability 目錄下)
2) 連結相關類庫
1. 選中專案
2. 選中目標
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目錄下
2.1.2使用說明
ASIHTTPRequest有很多功能,所有功能說明都可以在其官方網站的相關文件中查到,限於篇幅,本章僅簡單介紹一下如何使用ASIHTTPRequest來進行同步Http請求和非同步Http請求。在後面的章節中,我們還會用到它的一些其他功能。
在使用ASIHTTPRequest之前,請確認已經正確安裝,然後在需要應用它的程式碼檔案頭部,加入:
#import “ASIHTTPRequest.h”
這樣就可以在程式碼中使用ASIHTTPRequest相關的類。
建立一個同步請求
這是ASIHTTPRequest最簡單的一種使用模式,傳送startSynchronous訊息後即開始在同一執行緒中執行HTTP請求,執行緒將一直等待直到請求結束(請求成功或者失敗)。通過檢查error屬性可以判斷請求是否成功或者有錯誤發生。
要獲取返回的文字資訊,呼叫responseString方法。如果下載的是二進位制檔案,例如圖片、MP3,則呼叫responseData方法,可以得到一個NSData物件。
- (IBAction)grabURL:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request startSynchronous];
NSError *error = [request error];
if (!error) {
NSString *response = [request responseString];
}
}
一般情況下,應該優先使用非同步請求代替同步請求,當在主執行緒中使用ASIHTTPRequest同步請求,應用程式的介面會鎖定,無法進行任何操作,直到請求完成。
建立一個非同步請求
上例中的同步請求,如果換成非同步方式來呼叫,請求是在後臺執行緒中執行,當請求執行完後再通知呼叫的執行緒。這樣不會導致主執行緒進行網路請求時,介面被鎖定等情況。
- (IBAction)grabURLInBackground:(id)sender
{
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request startAsynchronous];
}
- (void)requestFinished:(ASIHTTPRequest *)request
{
// 當以文字形式讀取返回內容時用這個方法
NSString *responseString = [request responseString];
// 當以二進位制形式讀取返回內容時用這個方法
NSData *responseData = [request responseData];
}
- (void)requestFailed:(ASIHTTPRequest *)request
{
NSError *error = [request error];
}
相關文章
- SQLServer 遊標簡介與使用說明SQLServer
- .Net解析html文件類庫HtmlAgilityPack完整使用說明HTML
- 【LVS】簡介與說明
- ASIHTTPRequest庫HTTP
- 正規表示式單行、多行模式簡介(使用說明)模式
- jarsigner 簡單使用說明JAR
- VI 命令簡易使用說明
- 簡要的CKeditor使用說明
- Linux平臺C++類庫tinycxx使用說明 (轉)LinuxC++
- 資料庫欄位簡寫說明資料庫
- FTP 分類說明FTP
- mssql sqlserver updatetext關鍵字應用簡介說明SQLServer
- ASIHttpRequest使用詳解HTTP
- 使用說明
- Lightbox_me彈出層外掛使用說明簡單介紹
- Webots和ROS的使用說明(譯)WebROS
- Oracle Audit 功能的使用和說明Oracle
- 關於DOCTYPE的使用和說明
- 匯出和匯入資料庫使用者操作說明資料庫
- java 類路徑說明Java
- java String類說明Java
- Hyperion模組分類說明
- [FFmpeg]ffmpeg各類引數說明與使用示例
- mssql sqlserver 關鍵字 GROUPING用法簡介及說明SQLServer
- WebApiClientCore使用說明WebAPIclient
- QLExpress使用說明Express
- postman 使用說明Postman
- Sqlite使用說明SQLite
- cmake使用說明
- certbot 使用說明
- CentOS 7升級核心簡明說明CentOS
- pureftpd安裝配置簡明說明 (轉)FTP
- sqlmap簡單中文說明SQL
- Hashtable簡介和使用
- RubyGems簡介和使用
- js 快捷鍵大全,並有簡單使用說明JS
- css樣式說明介紹CSS
- JavaScript介紹及說明(01)JavaScript