OC学习心得之异步连接
2015-11-15 17:55
267 查看
1、同步连接和异步连接
同步连接是iOS中网络连接的一种方式,当请求的数据量小时,同步连接是一个很好的选择。UI“冻结”是它的一个缺点。
同步连接步骤:
//新建一个URL
NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do?type=focus-c"];
//创建一个请求
NSURLRequest *req=[NSURLRequest requestWithURL:url];
//发起同步连接
NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
//打印字符串信息
NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"str = %@",str);
异步连接是iOS最常用的一种网络连接方式。适应传输数据量大,在连接过程中UI不“冻结”。
异步连接步骤:
//初始化一个URL
NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do?type=focus-c"];
//创建一个请求
NSURLRequest * req = [NSURLRequest requestWithURL:url];
//发起异步连接
[NSURLConnection connectionWithRequest:request delegate:self];
//其他的事情交给代理方法去完成
NSLog(@"NSURLConnection 完成");
异步请求代理方法
(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response//连接接受响应,表示成功建立连接
(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data//连接接受数据
(void)connectionDidFinishLoading:(NSURLConnection *)connection
//连接完成
2、JSON解析
数据解析是从繁杂的数据中筛选出自己需要的数据。
规则:大括号代表字典,中括号(或小括号)代表数组。冒号左右两边分别为key键和值value。数据与数据之间用逗号分隔。
例如:
[{"name":"kallen","age":"26","sex":"男"},{'"name":"alex","age":"24","sex":"男"}]
数组中存放连个字典,字典里包含3个key值。
例如:
存在jsont.json文件,解析出名字kallon
NSString *path=[[NSBundle mainBundle]pathForResource:@"jsont" ofType:@"json"];//获取文件路径
NSString *jsonStr=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];//创建字符串根据读取到的文件路径
NSDictionary *jsondic=[jsonStr JSONValue];//将字符串转化为字典
NSArray *jsonArray=[jsondic objectForKey:@"hello"];
NSDictionary *dic=[jsonArray objectAtIndex:0];//数组里下标为0的字典
NSString*name=[dic objectForKey:@"name"];//将字典的属性name
NSLog(@"%@",name);
运行结果
2013-02-18 15:00:51.603 oc第九课文件和网络 课堂练习[1557:c07] kallon
2、GET请求和POST请求
GET将参数直接写在了访问路径上,POST请求将参数放到body里面。它们的区别有以下几点:
a、GET操作简单,所有参数直接写到地址里面就可以了;POST操作相对复杂,需要将参数和地址分开写。
b、GET方式参数容易被外界看到,安全性不高;POST方式安全性比较高,参数放在了body里面,不易被捕获。
c、GET方式地址(含参数)最多长度255字节,多余的部分会被截掉;POST因为参数在body里面,所以即使传再多内容都没问题。
1、同步连接和异步连接
同步连接是iOS中网络连接的一种方式,当请求的数据量小时,同步连接是一个很好的选择。UI“冻结”是它的一个缺点。
同步连接步骤:
//新建一个URL
NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do?type=focus-c"];
//创建一个请求
NSURLRequest *req=[NSURLRequest requestWithURL:url];
//发起同步连接
NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
//打印字符串信息
NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"str = %@",str);
异步连接是iOS最常用的一种网络连接方式。适应传输数据量大,在连接过程中UI不“冻结”。
异步连接步骤:
//初始化一个URL
NSURL *url = [NSURL URLWithString:@"http://api.hudong.com/iphonexml.do?type=focus-c"];
//创建一个请求
NSURLRequest * req = [NSURLRequest requestWithURL:url];
//发起异步连接
[NSURLConnection connectionWithRequest:request delegate:self];
//其他的事情交给代理方法去完成
NSLog(@"NSURLConnection 完成");
异步请求代理方法
(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response//连接接受响应,表示成功建立连接
(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data//连接接受数据
(void)connectionDidFinishLoading:(NSURLConnection *)connection
//连接完成
2、JSON解析
数据解析是从繁杂的数据中筛选出自己需要的数据。
规则:大括号代表字典,中括号(或小括号)代表数组。冒号左右两边分别为key键和值value。数据与数据之间用逗号分隔。
例如:
[{"name":"kallen","age":"26","sex":"男"},{'"name":"alex","age":"24","sex":"男"}]
数组中存放连个字典,字典里包含3个key值。
例如:
存在jsont.json文件,解析出名字kallon
NSString *path=[[NSBundle mainBundle]pathForResource:@"jsont" ofType:@"json"];//获取文件路径
NSString *jsonStr=[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];//创建字符串根据读取到的文件路径
NSDictionary *jsondic=[jsonStr JSONValue];//将字符串转化为字典
NSArray *jsonArray=[jsondic objectForKey:@"hello"];
NSDictionary *dic=[jsonArray objectAtIndex:0];//数组里下标为0的字典
NSString*name=[dic objectForKey:@"name"];//将字典的属性name
NSLog(@"%@",name);
运行结果
2013-02-18 15:00:51.603 oc第九课文件和网络 课堂练习[1557:c07] kallon
2、GET请求和POST请求
GET将参数直接写在了访问路径上,POST请求将参数放到body里面。它们的区别有以下几点:
a、GET操作简单,所有参数直接写到地址里面就可以了;POST操作相对复杂,需要将参数和地址分开写。
b、GET方式参数容易被外界看到,安全性不高;POST方式安全性比较高,参数放在了body里面,不易被捕获。
c、GET方式地址(含参数)最多长度255字节,多余的部分会被截掉;POST因为参数在body里面,所以即使传再多内容都没问题。
相关文章推荐
- 系统级I/O 第八周11.9~11.15
- 第十章深化学习
- 17.4.3 使用MulticastSocket实现多点广播(2)
- 关于python数组对象“=”的小陷阱
- Sass 基本特性-运算 感觉满满都是坑
- 删除MFC单文档默认菜单栏的两种方法
- oc中几种属性特质:nonatomic,copy,retain等
- junit中的assert方法总结
- hdu 2234 无题I (IDA*+dfs)
- 线程安全的单例模式
- Javascript实用方法
- FOJ有奖月赛-2015年11月-Problem B 函数求解
- 文章标题
- MVC,jquery异步
- 信息安全系统设计基础第十周学习总结
- 114 linux ubuntu开机卡在checking battery state
- OC学习心得之数据类型
- virtualbox 迁移 已安装系统
- jQUery中的$(document).ready()方法和window.onload()方法的区别
- VC和LUA混合开发之VC程序调用Lua脚本函数