在ASIHTTPRequest架構中與HTTP請求相關的類有:ASIHTTPRequest和ASIFormDataRequest,其中最常用的是ASIHTTPRequest,ASIFormDataRequest是ASIHTTPRequest的子類,ASIFormDataRequest可以發送類似與HTML表單資料,也可以上傳資料,預設採用POST要求方法。也可以其它的HTTP要求方法。它們都可以進行非同步或同步請求。下面我們從最簡單的GET同步請求介紹。
1、實現GET同步請求
實現GET同步請求使用最基本請求類ASIHTTPRequest就可以了。我們還是使用MyNotes應用為例,只考慮查詢功能實現,修改主視圖控制器MasterViewController.m的startRequest方法如下:
-(void)startRequest { NSString *strURL = [[NSString alloc] initWithFormat: @”http://iosbook3/mynotes/webservice.php?email=%@&type=%@&action=%@”, @”<你的iosbook1.com使用者郵箱>”,@”JSON”,@”query”]; NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request startSynchronous]; NSLog(@”請求完成…”); NSError *error = [request error]; if (!error) { //NSString *response = [request responseString]; NSData *data = [request responseData]; NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; [self reloadView:resDict]; } }
使用ASIHTTPRequest類,需要引入標頭檔ASIHTTPRequest.h。
2、實現POST同步請求
發送POST方法的請求,無論同步還是非同步請求都是使用ASIFormDataRequest類,只不過它們稍微有些不同。本節我們只介紹同步請求下使用ASIFormDataRequest類來發送POST方法。修改主視圖控制器MasterViewController.m的startRequest方法如下:
-(void)startRequest { NSString *strURL = @”http://iosbook3/mynotes/webservice.php”; NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]]; ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; [request setPostValue:@ "<你的iosbook1.com使用者郵箱>" forKey:@"email"]; ③ [request setPostValue:@"JSON" forKey:@"type"]; [request setPostValue:@"query" forKey:@"action"]; [request startSynchronous]; NSLog(@”請求完成…”); NSError *error = [request error]; if (!error) { //NSString *response = [request responseString]; NSData *data = [request responseData]; NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; [self reloadView:resDict]; } }
使用ASIFormDataRequest需要引入標頭檔ASIFormDataRequest.h。
如果我們想發送除了GET和POST以外的其它要求方法,可以使用[request setRequestMethod:@"PUT"]語句設定,其中PUT是要求方法。
本文出自 “關東升” 部落格,請務必保留此出處http://2009315319.blog.51cto.com/701759/1168240