请求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/ 版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:https://www.cnblogs.com/PaulpauL/p/4935291.html