网络请求分为4类:
GET同步请求
GET异步请求
POST同步请求
POST异步请求
GET请求接口
接口:http://api.map.baidu.com/place/v2/search?query=酒店®ion=郑州&output=json&ak=6E823f587c95f0148c19993539b99295
POST请求接口
接口:http://api.tudou.com/v3/gw
参数:method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10
GET请求大图片
http://image.zcool.com.cn/56/13/1308200901454.jpg
同步网络请求步骤:
1:创建网址字符串对象
NSString *urlStr = [NSString stringWithFormat:@“ http://api.map.baidu.com/place/v2/search?query=%@®ion=%@&output=json&ak=6E823f587c95f0148c19993539b99295",@"网吧",@"北京"];
2: (选择性实现)如果网址字符串对象中存在中文,需要将中文转换成URLEncode
urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
3:创建网址链接对象
NSURL *url = [NSURL URLWithString:urlStr];
4:创建请求对象(请求方式:约定的传输方式。链接:开始真正进行数据传输)
NSURLRequest *request = [[[NSURLRequest alloc] initWithURL:url] autorelease];
(1)同步链接时:
5:建立链接
NSURLResponse *response = nil;//储存服务器的返回信息
NSError *error = nil;//存储请求失败的信息
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
6:数据解析
NSMutableDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
7:提取数据
NSMutableArray *dataArr = [dataDic objectForKey:@"results"];
for (NSDictionary *dataDic in dataArr) {
//创建商家对象,这个需要Shopper类,并且定义属性和方法在这使用(在这里这不是重点,只是引用)
Shopper *shopper = [[Shopper alloc] initWithDic:dataDic];
[self.shoppers addObject:shopper];
NSLog(@"%@",self.shoppers);
[shopper release];
}
8:展示数据(对数据的更新)
[self.tableView reloadData];
(2)异步链接时:
5:创建子线程
NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
//6:数据解析
NSMutableDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
//7:提取数据
NSMutableArray *dataArr = [dataDic objectForKey:@"results"];
for (NSDictionary *dataDic in dataArr) {
//创建商家对象,这个需要Shopper类,并且定义属性和方法在这使用(initWithDic方法如下同颜色部分)
Shopper *shopper = [[Shopper alloc] initWithDic:dataDic];
[self.shoppers addObject:shopper];
[shopper release];
}
//8:将界面展示提交给程序的主队列
dispatch_async(dispatch_get_main_queue(), ^{
//9:展示数据(对数据的更新)
[self.tableView reloadData];
});
}];
//********************************************
- (id)initWithDic:(NSDictionary *)dataDic {
self = [super init];
if (self) {
self.name = dataDic[@"name"];
self.address = dataDic[@"address"];
}
return self;
}
//***********************************************
网友评论