1.通过URL获取JSON格式的数据 (hi,fashion中的应用实例)
- (void)viewDidLoad {
[super viewDidLoad];
//***网络请求
[self startRequst];
//***设置上拉刷新和下拉加载
__weak FirstViewController *weakself = self;
[self.collectionView addHeaderWithCallback:^{
_pageCount = 0;
[weakself startRequst];
}];
[self.collectionView addFooterWithCallback:^{
weakself.pageCount ++;
[weakself startRequst];
}];
[self.collectionView headerEndRefreshing];
}
- (void)startRequst{
//创建网络请求
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
NSString *url = [NSString stringWithFormat:@"http://api.nanyibang.com/campaign?age=24&campaignId=0&campaignType=jingxuan&page=%ld&version=1.2.7", (long)self.pageCount];
[manager GET:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject)
{
//进行数据解析
[self dealDataFromNetWork:dic];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"网络请求失败");
}];
}
//进行数据解析
- (void)dealDataFromNetWork:(NSMutableDictionary *)dataDic{
if (self.pageCount == 0) {
[self.dataSource removeAllObjects];
[self.collectionView headerEndRefreshing];
}else{
[self.collectionView footerEndRefreshing];
}
NSMutableDictionary *nextDataDic = dataDic[@"data"];
NSMutableArray *goodList = nextDataDic[@"itemDetail"];
for (NSDictionary *goodDic in goodList) {
Goods *good = [[Goods alloc]init];
[good setValuesForKeysWithDictionary:goodDic];
[self.dataSource addObject:good];
[good release];
}
//刷新
[self.collectionView reloadData];
}
2.通过URL获取非JSON格式的数据 (云暴直播中的应用实例)
- (void)viewDidLoad {
[super viewDidLoad];
//***网络请求
[self startRequst];
//集成下拉刷新操作
[self.collectionView addHeaderWithTarget:self action:@selector(refreshingAction)];
//定制下拉刷新的刷新内容
self.collectionView.headerPullToRefreshText = @"下拉暴暴为您加载新内容";
self.collectionView.headerReleaseToRefreshText = @"松手暴暴开始加载";
self.collectionView.headerRefreshingText = @"暴暴正在努力加载";
//开始刷新操作
[self.collectionView headerBeginRefreshing];
}
//定义下拉刷新操作
- (void)refreshingAction{
self.pageCount = 0;
[self startRequst];
}
#pragma mark NetRequst
- (void)startRequst{
NSString *str =[HTTPSTR stringByAppendingString:@"/index.php/Api/getindexinfo_api"];
NSURL *url = [NSURL URLWithString:str];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSString *kengkengString = operation.responseString;
//这里有个坑,因为接收到的字符串有(), 要进行处理,所以起名坑坑String 😢。
NSString *kengString=[kengkengString stringByReplacingOccurrencesOfString:@"(" withString:@""];
NSString *String = [kengString stringByReplacingOccurrencesOfString:@")"withString:@""];
NSMutableDictionary *dic = [NSJSONSerialization JSONObjectWithData:[String dataUsingEncoding:NSUTF8StringEncoding] options:NSJSONReadingAllowFragments error:nil];
//停止刷新操作
[self.collectionView headerEndRefreshing];
//清除原来的数据
[self.dataSource removeAllObjects];
[self.rollpic removeAllObjects];
//进行数据解析
[self dealDataFromNetWork:dic];
}failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"发生错误!%@",error);
}];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[queue addOperation:operation];
}
//进行数据解析
- (void)dealDataFromNetWork:(NSMutableDictionary *)dataDic{
[self.collectionView headerEndRefreshing];
NSMutableArray *recommend = dataDic[@"recommend"];
for (NSDictionary *modelList in recommend) {
FirstViewModel *model = [[FirstViewModel alloc]init];
[model setValuesForKeysWithDictionary:modelList];
[self.dataSource addObject: model];
}
NSMutableArray *picArray = dataDic[@"rollpic"];
for (NSDictionary *picList in picArray) {
NSString *picpath = picList[@"picpath"];
NSString *picStr = [HTTPSTR stringByAppendingString:picpath];
[self.rollpic addObject: picStr];
}
//刷新
[self.collectionView reloadData];
}