联系客服:400-805-1963

iOS网络编程-ASIHTTPRequest框架同步请求
更新:HHH   时间:2023-1-7


在ASIHTTPRequest框架中与HTTP请求相关的类有:ASIHTTPRequest和ASIFormDataRequest,其中最常用的是ASIHTTPRequest,ASIFormDataRequest是ASIHTTPRequest的子类,ASIFormDataRequest可以发送类似与HTML表单数据,也可以上传数据,默认采用POST请求方法。也可以其它的HTTP请求方法。它们都可以进行异步或同步请求。下面我们从最简单的GET同步请求介绍。

1、实现GET同步请求

实现GET同步请求使用最基本请求类ASIHTTPRequest就可以了。我们还是使用MyNotes应用为例,只考虑查询功能实现,修改主视图控制器MasterViewController.m的startRequest方法如下:
 

  1. -(void)startRequest 
  2.  
  3. { 
  4.  
  5. NSString *strURL = [[NSString alloc] initWithFormat: 
  6.  
  7. @”http://iosbook3/mynotes/webservice.php?email=%@&type=%@&action=%@”, 
  8.  
  9. @”<你的iosbook1.com用户邮箱>”,@”JSON”,@”query”]; 
  10.  
  11. NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]]; 
  12.  
  13. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
  14.  
  15. [request startSynchronous]; 
  16.  
  17. NSLog(@”请求完成…”); 
  18.  
  19. NSError *error = [request error]; 
  20.  
  21. if (!error) { 
  22.  
  23. //NSString *response = [request responseString]; 
  24.  
  25. NSData *data  = [request responseData]; 
  26.  
  27. NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:data 
  28.  
  29. options:NSJSONReadingAllowFragments error:nil]; 
  30.  
  31. [self reloadView:resDict]; 
  32.  
  33. } 
  34.  
  35. } 



使用ASIHTTPRequest类,需要引入头文件ASIHTTPRequest.h。

2、实现POST同步请求

发送POST方法的请求,无论同步还是异步请求都是使用ASIFormDataRequest类,只不过它们稍微有些不同。本节我们只介绍同步请求下使用ASIFormDataRequest类来发送POST方法。修改主视图控制器MasterViewController.m的startRequest方法如下:
 

  1. -(void)startRequest 
  2.  
  3. { 
  4.  
  5. NSString *strURL = @”http://iosbook3/mynotes/webservice.php”; 
  6.  
  7. NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]]; 
  8.  
  9.   
  10.  
  11. ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
  12.  
  13. [request setPostValue:@ "<你的iosbook1.com用户邮箱>" forKey:@"email"];                ③ 
  14.  
  15. [request setPostValue:@"JSON" forKey:@"type"]; 
  16.  
  17. [request setPostValue:@"query" forKey:@"action"]; 
  18.  
  19. [request startSynchronous]; 
  20.  
  21. NSLog(@”请求完成…”); 
  22.  
  23. NSError *error = [request error]; 
  24.  
  25. if (!error) { 
  26.  
  27. //NSString *response = [request responseString]; 
  28.  
  29. NSData *data  = [request responseData]; 
  30.  
  31. NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:data 
  32.  
  33. options:NSJSONReadingAllowFragments error:nil]; 
  34.  
  35. [self reloadView:resDict]; 
  36.  
  37. } 
  38.  
  39. } 



使用ASIFormDataRequest需要引入头文件ASIFormDataRequest.h。

如果我们想发送除了GET和POST以外的其它请求方法,可以使用[request setRequestMethod:@"PUT"]语句设置,其中PUT是请求方法。

返回移动开发教程...