iOS网络请求之NSURLSession

引言

最近半年一直在学习JavaWeb,落下了iOS。如下寒假来临,自己又有时间进一步学习iOS了。并且伴随了在寒假准备搞定一个项目,工作之余开始自己有意识的要提高,决定深入研究一下”网络”这一块。

NSURLSession

自己开始写的时候发现最基本的网络的请求不能用了,开始寻求答案。
如下:这是“聚合数据官网”的一个有关身份证查询的API

      //1、构造URL
      NSString *URLString = @"http://apis.juhe.cn/idcard/index?key=官网提供的Key&cardno=身份证号";
    NSURL *URL = [NSURL URLWithString:URLString];
  
  //2、构造Request:HTTP请求类型、HTTP请求体、超市、HTTP请求头、
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:URL cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5];

    //3、构造Session
    NSURLSession *session = [NSURLSession sharedSession];

    //4、构造task
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        //请求结束后得到数据
        NSError *myError;
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&myError];
        if (myError == nil) {
            NSDictionary *result = [dic objectForKey:@"result"];
            if (result) {
                NSLog(@"地区:%@",[result objectForKey:@"area"]);
                NSLog(@"性别:%@",[result objectForKey:@"sex"]);
                NSLog(@"出生日期:%@",[result objectForKey:@"birthday"]);
            }
        }
    }];


    //5、唤醒task    

    [task resume];

还有在iOS 9 中HTTP协议也不能用了,请大家搜一下高级的内容:我的解决方案:改回HTTP:在Info.plist中添加一个Key:App Transport Security Settings。然后在该Key下面添加添加一个Key:Allow Arbitrary Loads,值设为YES.

posted @ 2016-01-29 16:01  天&泽  阅读(327)  评论(0编辑  收藏