object-c 网络(中)
来源:互联网 发布:vb中怎么加密输入 编辑:程序博客网 时间:2024/06/13 05:43
iPhone网络开发中级-同步 异步开发
在网络开发中,你会经常碰到同步和异步的问题,什么时候用同步什么时候用异步,这个就不多说了。我主要说下,在移动开发(iphone中)同步和异步
首先我说说最原始的方式来解决同步和异步的问题。所谓最原始的方式,就是步借助其他的一些开源的框架,来达到放送同步和异步的方式。
1:异步的方式
NSMutableData * data=[NSMutableData alloc]initWhthLength:0];
创建可变数据
NSMutableURLRequest *request=[[NSMutableURLRequestalloc]initWithURL:urlcachePolicy:NSURLRequestReloadIgnoringCacheDatatimeoutInterval:60];
NSURLConnection *connection=[[NSURLConnectionalloc]initWithRequest:requestdelegate:self];
[request setHTTPMethod:@"GET"];
创建一个请求
下面就是一些响应的方法,当你请求发出后,你要做出一些回应,那就需要一下异步响应的一下方法。在异步中最主要的有这个几个方法
第一个:收到响应后触发的请求 -(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
第二个:每次受到数据就会触发的方法:-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 可以对数据进行出来
第三个:当请求发生错误会触发的方法:-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
第四个:当全部数据接收完成就会触发的放法:-(void)connectionDidFinishLoading:(NSURLConnection *)connection
异步知道了,那同步就会简单很多,下面就来了解下同步的机制和方法。
2:同步的方式
不管是同步还是异步,都要发送一个请求这个是必然的,没有请求就没有数据。
NSMutableURLRequest *request=[[NSMutableURLRequestalloc]initWithURL:urlcachePolicy:NSURLRequestReloadIgnoringCacheDatatimeoutInterval:60];
请求都是一样的
设置url: [request setURL:[NSURLURLWithString:url]];
设置http请求的方式 [request setHTTPMethod:@"GET"];
NSData *data111=[NSURLConnection sendSynchronousRequest:request returningResponse:response error:error];
[request release];
以上这些就是最原始的同步和异步的请求。下面我们要介绍的是用开源框架库:ASIHTTPRequest来实现同步和异步的方法。
1:同步的方式
构建url的方式都是一样的,这里我就不多写了。
在使用ASIHTTPRequest方式的时候要构造其对象。并且发送同步请求
ASIHTTPRequest * ashttpRequest=[ASIHTTPRequestrequestWithURL:url];
[ashttpRequest startSynchronous];
NSError * error=[ashttpRequesterror]; //错误的数据
NSString * returnStr=[ashttpRequestresponseString];//返回成功后的数据
2:异步的请求
ASIHTTPRequest *asiHttpRequest=[ASIHTTPRequestrequestWithURL:url];
[asiHttpRequest setDelegate:self];
[asiHttpRequest startSynchronous];
以上这些和同步的区别不是太大,就多了一个设定委托代理的方式。其实异步就是用这个进行实现的。在异步中最主要的方法就是一个接收数据的方法和一个失败的方法。下面就是这2个方法
-(void)requestFinished:(ASIHTTPRequest *)request{}
这个就是请求结束后,获得的一些response数据的方法,你就可以对这些数据进行组装。当失败了就会调下面的方法。
-(void)requestFailed:(ASIHTTPRequest * )request{}
这个就是请求失败,获得失败的数据(error)
当你看了上面2种请求方式,你就会在你的平时的代码中,灵活的运用。在用2种框架的方式去实现那2种请求的时候,不能说哪一种好,哪一种不好。你要根据你的需要进行选择。希望这些对你们有些帮助。- object-c 网络(中)
- object-c 网络(下)
- object-c 中const !
- Object-C中分类
- Object-C中分类
- object-c 中括号[]
- Object-C中管理内存
- Object C中static关键字
- 理解Object-C中字符串
- Object-c 中字符串总结
- Object-c 中字符串总结
- Object-C中生成随机数
- object-c中私有方法
- Object-c 中Extension解析
- Object-c中对象初始化
- object-c中扩展--extension
- Object-C中排序算法
- object-c(1)
- 程序员的职场潜意识Top10
- 心动C++: 情牵二叉树(C Language)
- Sprite Kit学习笔记(一)初探
- IOS动画简介
- mysql find_in_set
- object-c 网络(中)
- Linux常用指令(幻影快递Linux小组)
- Oracle中的in和exists区别
- 九度oj1387求Fibonacci数列第n项
- AIX的vmstat命令详解
- 漫谈中国软件(中)
- 查找弹窗软件的全路径名称
- 项目沟通案例(一)
- hibernate+spring 连接多个数据库,动态切换(多帐套)的实现