ASIHTTPRequest框架是优秀的第三方OC的HTTP框架,支持Mac OS X和iOS下得HTTP开发。
具有如下优点:
1、支持下载数据放在内存或本地文件
2、容易访问请求和应答HTTP Header
3、支持Cookie
4、支持GZip请求或应答(?)
5、支持缓存
6、支持同步或异步请求
7、支持HTTPs
但是,ASIHTTPRequest不支持ARC。
配置ASI框架:向项目中导入ASI框架之后,还要向工程中引入一些框架和类库:
ASIHTTPRequest框架中与HTTP请求相关的类有:ASIHTTPRequest和ASIFormDataRequest。常用的是ASIHTTPRequest。
ASIFormDataRequest是ASIHTTPRequest的子类,ASIFormDataRequest可以发送类似于HTML的表单数据,也可以上传数据,默认采用Post请求方式。
ASIFormDataRequest和ASIHTTPRequest都可以进行同步和异步请求。
1、发送 “同步、Get” 请求
使用最基本请求类ASIHTTPRequest就可以了。
- (void)startRequest
{
NSString *strUrl = [[NSString alloc] initWithFormat:@"http://iosbook3.com/service/mynotes/webservice.php? email=%@&type=%@&action=%@",@"ios_yaoxinchao@163.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]; 【1】
NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
。。。。
}
}
【1】:调用请求对象的responseData方法获取从服务器端应答回来的结果,它返回值为NSData类型。如果想返回字符串,使用responseString方法。
2、发送 “同步、Post” 请求
发送Post方法请求,无论是同步还是异步请求,都是使用ASIFormDataRequest类。
- (void)startRequest
{
NSString *strUrl = @"http://iosbook3.com/service/mynotes/webservice.php"; 【1】
NSURL *url = [NSURL URLWithString:[strUrl URLEncodedString]];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
// 设置Post方式的请求参数信息
[request setPostValue:@"ios_yaoxinchao@163.com" forKey:@"email" ]; 【2】
[request setPostValue:@"JSON" forKey:@"type" ]; 【3】
[request setPostValue:@"query" forKey:@"action" ]; 【4】
// 发送 "同步、Post" 请求
[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];
。。。。
}
}
【1】:可以看出,URL后没有跟请求参数,不再是Get请求了。
【2】、【3】、【4】:设置Post方法的参数。