网络知识点复习

2016-01-04  本文已影响67人  信徒_lh
//创建默认配置对象
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
//设置请求头。
//config.HTTPAdditionalHeaders = @{@"apiKey":@"nil"};
//还可以设置无痕配置,以及后台运行的配置等等。可以根据自己需求配置
//配置设置完成后用配置对象创建会话对象,此处的委托可以通过回调其协议里的方法处理响应的事件(发生错误,后台传输完成,身份验证等)。
NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:nil];
//1.通过字符串(网址)创建统一资源定位符
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com";
//2.用统一资源富创建网络请求
NSRequest *req = [NSRequest requestWithURL:url cachePolicy:0 timeOutInterval:5];
//3.用会话对象的单例模式创建网络请求会话
NSURLSession *session = [NSURLSession sharedSession];
//4.通过会话创建一个获得数据的任务
    NSURLSessionDataTask *task = [session dataTaskWithRequest:req completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
        if (!error) {
            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:1 error:nil];
            for (NSDictionary *albumDict in dict[@"albums"]) {
                //通过YYModel将字典装成模型对象
                LHModel *model =[LHModel yy_modelWithDictionary:albumDict];
                [dataArray addObject:model];
            }
            //模型对象准备就绪后刷新表格视图
            //苹果官方规定:刷新界面的代码要再主线程中执行
            //否则界面可能无法刷新 因此下面的代码要回到主线程执行
            //写法一: GCD 异步派发(将代码发配到主线程中执行)
            //dispatch_async(dispatch_get_main_queue(), ^{
            //    [myTableView reloadData];
            //});
            //写法二:NSOperation和NSOperationQueue  操作队列
            //创建一个操作对象封装要执行的代码
            NSOperation *op = [NSBlockOperation blockOperationWithBlock:^{
                [myTableView reloadData];
            }];
            //将操作放到主队列(主队列中的操作在主线程中执行)中执行
            [[NSOperationQueue mainQueue] addOperation:op];
        }
        else{
            NSLog(@"error = %@",error);
        }
    }];
//将任务挂起、暂停、取消(suspend cancel);
[task resume];
[NSString stringWithByAddingPrecentEscapesUsingEncoding:NSUTF8StringEncoding];
[NSString stringByTrimmingCharacterInset:[NSCharacterInset whitespaceCharacterInset]];
上一篇 下一篇

猜你喜欢

热点阅读