码迷,mamicode.com
首页 > Web开发 > 详细

文件与网络、JSON解析

时间:2015-06-13 20:07:43      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

文件与网络、JSON解析

  分类: OC语言基础

同步、异步、JSON解析、XML解析

NSData 字节数据存储,二进制存储,苹果中认为字符型和字节型都可以存,即计算机中所有类型的数据,主要用于网络传输数据的缓冲存储

GET请求,只支持255个字符 ,安全性较差,将请求信息附加在超链接上,较方便

 POST请求,上传没有大小限制,请求信息在请求体内,在超链接上不能看到,安全性强,缺点:不方便

同步连接:UI “冻结”

异步连接:UI “不冻结”

异步连接,用代理:下载容易造成UI冻结,耗时,这时候用代理来操作,就可以在后台操作,同时可以做别的事情

1.同步连接网络请求

//同步连接网络请求

- (IBAction)sendMassage:(id)sender {

    [self.textUrl resignFirstResponder];

    NSURL *url=[NSURL URLWithString:self.textUrl.text];

    NSURLRequest *req=[NSURLRequest requestWithURL:url];

    NSData *data=[NSURLConnection sendSynchronousRequest:req returningResponse:nil error:nil]; //创建data对象,接收请求返回的数据

    NSLog(@"发起同步连接");

    NSString *jsonStr=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];

   // NSLog(@"%@",jsonStr);

    

    //JSON解析

    NSDictionary*jsonDic=[jsonStr JSONValue];

    NSArray *array=[jsonDic objectForKey:@"items"];

    NSDictionary*dic=[array objectAtIndex:0];

    NSString*string=[dic objectForKey:@"city"];

    NSLog(@"解析出来的城市为:%@",string);

}

2.异步连接网络请求

//异步连接网络请求

- (IBAction)sendTelegateMassage:(id)sender {

    [self.textUrl resignFirstResponder]; //撤销文本框响应

    NSURL *url=[NSURL URLWithString:self.textUrl.text];//创建URL对象

    NSURLRequest *req=[NSURLRequest requestWithURL:url];

    [NSURLConnection connectionWithRequest:req delegate:self];//异步请求,使用代理,代理为self

    NSLog(@"发起异步连接");

}

//是否建立连接

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

    NSLog(@"连接已建立");

    self.completeData=[[NSMutableData alloc]init];//completeData开辟空间,用于接收完整数据

}

//是否在接收数据

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

    NSLog(@"正在传输数据");

    [self.completeData appendData:data];//反复执行该方法,向completeData中添加接收回来的数据,直到数据完整

}

//连接是否完成

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{

   

    NSLog(@"数据接收完成");

    NSString *jsonStr=[[NSString alloc]initWithData:self.completeData encoding:NSUTF8StringEncoding];

    NSLog(@"%@",jsonStr);

    

    //JSON解析

    NSDictionary*jsonDic=[jsonStr JSONValue];

    NSArray *array=[jsonDic objectForKey:@"items"];

    NSDictionary*dic=[array objectAtIndex:0];

    NSString*string=[dic objectForKey:@"city"];

    NSLog(@"解析出来的城市为:%@",string);

}

在.h文件中标示出要遵循的协议 >

@interface ViewController : UIViewController <</span>NSURLConnectionDataDelegate>

下面三种方法在异步连接中需要实现,它是在协议中定义的方法,所以不必再次声明

////是否建立连接

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

////是否在接收数据

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

////连接是否完成

//-(void)connectionDidFinishLoading:(NSURLConnection *)connection;

 

*关于JSON解析:

JSON和XML都是一种数据格式组织形式。

JSON数据格式规则:大括号代表字典,中括号(或小括号)代表数组。冒号左右两边分别为键和值。数据与数据之间用逗号分隔。

  • [{"name":"kallen","age":"26","sex":"男"},{‘"name":"alex","age":"24","sex":"男"}]

整体为一个数组,数组元素为两个字典,每个字典中又包括三对键和值。

使用JSON解析之前需要先导入JSON工具包。

导入框架:点击项目,在Build Phases下的Link Binary With Librarids 中导入,在Build Settings中做配置,更改或者添加 search 路径

文件与网络、JSON解析

标签:

原文地址:http://www.cnblogs.com/positiveenergy/p/4573982.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!