ASIHTTPRequest 一款強大的HTTP封裝開源項目

來源:互聯網
上載者:User

ASIHTTPRequest,是一個直接在CFNetwork上做的開源項目,提供了一個比官方更方便更強大的HTTP網路傳輸的封裝。

特色功能如下:

1,下載的資料直接儲存到記憶體或檔案系統裡

2,提供直接提交(HTTP POST)檔案的API

3,可以直接存取與修改HTTP請求與響應HEADER

4,輕鬆擷取上傳與下載的進度資訊

5,非同步請求與隊列,自動管理上傳與下載隊列管理機

6,認證與授權的支援

7,Cookie

8,請求與響應的GZIP

9,代理請求



下面來兩個小例子:
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

[request start];

NSError *error = [request error];

if (!error) {

    NSString *response = [request responseString];

}


當你需要添加更多的請求資訊時,如,添加個請求Header:
[request addRequestHeader:@"name" value:@"Jory lee"];


添加Post請求時的健值:
[request setPostValue:@"Ben" forKey:@"first_name"];

[request setPostValue:@"Copsey" forKey:@"last_name"];

[request setFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photo"];


設定HTTP的授權帳號:
[request setUsername:@"username"];

[request setPassword:@"password"];


一個非同步請求:
- (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

{

// Use when fetching text data

NSString *responseString = [request responseString];


// Use when fetching binary data

NSData *responseData = [request responseData];

}


- (void)requestFailed:(ASIHTTPRequest *)request

{

NSError *error = [request error];

}   


在我們資料擷取的過程中,如果資料來源複雜,一個請求隊列是必不可少的:
- (IBAction)grabURLInTheBackground:(id)sender

{

if (![self queue]) {

[self setQueue:[[[NSOperationQueue alloc] init] autorelease]];

}


NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];

[request setDelegate:self];

[request setDidFinishSelector:@selector(requestDone:)];

[request setDidFailSelector:@selector(requestWentWrong:)];

[[self queue] addOperation:request]; //queue is an NSOperationQueue

}


- (void)requestDone:(ASIHTTPRequest *)request

{

NSString *response = [request responseString];

}


- (void)requestWentWrong:(ASIHTTPRequest *)request

{

NSError *error = [request error];

}   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.