#网络数据解析

2016-05-14  本文已影响84人  YuWenHaiBo

首先我们准备一些准备工作新建一个singleView工程,然后如图所示


heiyu.png heiyu.png

如图所示,我们新建一个名字叫URL的headFile文件,方便以后调用接口

关于网络数据解析iOS9.0之后已经弃用NSConnection不过还是能用,不过推荐使用NSSession.
由于代理比较麻烦,所以这里只整理block

NSURLConnection解析

// #pragma mark - post同步请求

 //1.创建url
 NSURL *url = [NSURL URLWithString:POST_URL];
     
 
 //2.创建网络请求 [post请求必须初始化为可变请求,因为稍后要进行一些内容的设置]
 NSMutableURLRequest *mutableRequest = [NSMutableURLRequest requestWithURL:url];
 
 //2.5设置body
 //创建一个连接字符串(这个内容在以后的开发中接口文档都有标注)
 NSString *dataString = POST_BODY;
 
 //对连接字符串进行编码【这一步千万不能忘记】
 NSData *postData = [dataString `dataUsingEncoding:NSUTF8StringEncoding];
 
 //设置请求格式为POST请求  [在这个地方后边POST必须全大写]
 [mutableRequest setHTTPMethod:@"POST"];
 
 //设置请求体(body)
 [mutableRequest setHTTPBody:postData];
 
 
 //3.连接服务器
 NSData *data = [NSURLConnection sendSynchronousRequest:mutableRequest returningResponse:nil error:nil];
 
 //4.进行json数据解析
 NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
 
 NSLog(@"dic = %@",dic);
// #pragma mark - get同步请求
 // 1.创建URL
NSURL *url = [NSURL URLWithString:GET_URL];
// 2.创建网络请求
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:20];
// 3.连接服务器
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
// 4.解析数据
NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
NSLog(@"dic = %@",resultDic);
// #pragma mark - post异步请求(block)
 //1.创建url
    NSURL *url = [NSURL URLWithString:POST_URL];
// 2.创建网络请求
    NSMutableURLRequest *mRequest= [NSMutableURLRequest requestWithURL:url];
    
//2.5创建body
    NSString *string = POST_BODY;
    NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
    [mRequest setHTTPMethod:@"POST"];
    [mRequest setHTTPBody:data];
//3.链接服务器
    [NSURLConnection sendAsynchronousRequest:mRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
        if (connectionError == nil) {
            
//4.数据解析
    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
            NSLog(@"%@", dict);
        }
    }];

// #pragma mark - get异步请求(block)
//1.创建url
NSURL *url = [NSURL URLWithString:GET_URL];
    
//2.创建请求
NSURLRequest *request = [NSURLRequest requestWithURL:url];
    
//3.链接服务器
    //方法一:Block方法实现
    //第一个参数:请求对象
    //第二个参数:线程队列
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
        //response是携带的接口信息
        //data请求下来的数据,接下来会使用到的
        //connectionError错误信息
        if (connectionError == nil) {
//4.解析
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];        
            NSLog(@"dic = %@",dic);     
            //先开辟子线程解析数据
            //然后在主线程里刷新UI
        }
    }];

NSURLSession解析

// #pragma mark - get同步请求
//1.创建url
    NSURL *url = [NSURL URLWithString:GET_URL];
//2.创建session对象
    NSURLSession *session = [NSURLSession sharedSession];
//3.创建task请求任务
    //NSURLSession是基于任务去完成相关的事件的
    //NSURLSessionTask所有的任务均放在这个里边实现
    NSURLSessionTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//4.解析相关的数据
        if (error == nil) {
            NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
            NSLog(@"dic = %@",dic);
        }   
    }]; 
//5.核心步:启动任务【千万不能忘记】
//原因:NSURLSessionTask实例出来的任务处于挂起状态,如果不启动,不会走block中的实现内容
    [task resume]; 

// #pragma mark - post异步请求
    //1.创建url
    NSURL *url = [NSURL URLWithString:POST_URL];
    
    //2.创建请求
    NSMutableURLRequest *mutableRequest = [NSMutableURLRequest requestWithURL:url];
    
    //2.5核心设置body
    NSString *bodyString = POST_BODY;
    
    NSData *postData = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
    
    [mutableRequest setHTTPMethod:@"POST"];
    [mutableRequest setHTTPBody:postData];
    
    //3.创建session对象
    NSURLSession *session = [NSURLSession sharedSession];
    
    //4.创建task
    NSURLSessionTask *task = [session dataTaskWithRequest:mutableRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        //5.解析
        if (error == nil) {
            NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
            
            NSLog(@"dic = %@",dic);
        }
        
    }];
    
    //6.启动任务
    [task resume];

上一篇下一篇

猜你喜欢

热点阅读