当前位置:编程学习 > C/C++ >>

iOS网络编程-ASIHTTPRequest框架同步请求

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

1、实现GET同步请求

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

[cpp]
-(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]; 
 

 

-(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方法如下:

[cpp]
-(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]; 
 

 

-(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是请求方法。

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,