• 请求json和xml数据时的方式


    当请求xml数据时,直接通过NSMutableData接收后解析,

    NSURL *url = [NSURL URLWithString:PATH];

        _receiveData = [[NSMutableData alloc] initWithContentsOfURL:url];

        GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:_receiveData encoding:NSUTF8StringEncoding error:nil];

        GDataXMLElement *root = [doc rootElement];

    而请求的是json数据时,需要使用NSURLConnection的对象和协议方法来异步请求数据,该方法是苹果系统提供的.

    NSURL *url=[NSURL URLWithString:path];

    将请求的服务器地址封装在一个请求对象

    NSURLRequest *request=[NSURLRequest requestWithURL:url];

    创建一个对象,自动将比较费时的请求数据的操作启动一个子线程去执行,数据请求到后通过协议方法回到UI

    _urlConnection=[[NSURLConnection alloc]initWithRequest:request delegate:self];

    协议方法

    //当请求过程中出现错误(没有网络,请求超时。。。)时执行此协议方法

    -(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error;

    接收到服务器响应请求时执行的协议方法,response是服务器对客户端请求的一个响应对象

    -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

    {

        //响应应该是NSHTTPURLResponse类型的

        NSHTTPURLResponse *res=(NSHTTPURLResponse*)response;

        //获取响应的头部

        NSLog(@"%@",res.allHeaderFields);

        //响应的状态码:200成功,404资源不存在

        NSLog(@"%ld",res.statusCode);

        //清空缓冲区的数据

        [_receiveData setLength:0];

    }

    //请求到数据data,如果数据量很大,该方法会被调用多次

    -(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

    {

        [_receiveData appendData:data];

    }

    //请求结束,数据接收完毕调用此协议方法

    -(void)connectionDidFinishLoading:(NSURLConnection *)connection

    {

        //1、解析数据

        NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:_receiveData options:NSJSONReadingMutableContainers error:nil];

        NSArray *array=dict[@"users"];

        [_dataArray addObjectsFromArray:array];

        //2、刷新界面

        [self.tableView reloadData];

    }

    http://www.cnblogs.com/PaulpauL/ 版权声明:本文为博主原创文章,未经博主允许不得转载。
  • 相关阅读:
    25 Groovy 相关资料
    24 使用Maven 或 Gradle构建groovy
    UVA
    UVA
    UVA
    UVA
    UVA
    【JZOJ4235】序列【数论,数学】
    【JZOJ4235】序列【数论,数学】
    【JZOJ5230】队伍统计【状压DP】
  • 原文地址:https://www.cnblogs.com/PaulpauL/p/4935291.html
Copyright © 2020-2023  润新知