如今的应用大部分基予网络,在开源中国iOS客户端源码中关于网络通信方面用了三个类库,ASI和AFNetworking,还有一个苹果官方给出的Reachability用于检测当前网络状况,本文介绍当前用的比较多的ASI类库;
ASIHTTPRequest简称ASI,它是对CFNetwork
API进行封装,使在与web服务器通信时的繁琐步骤变得容易一些。它是使用Objective-C 编写,能够很好的用在Mac OS X和iPhone应用程序中;它适用于执行基本的HTTP请求和交互基于 REST的服务(GET / POST / PUT /DELETE)互交。
ASIHTTPRequest下载https://github.com/pokeb/asi-http-request/tree
关于ASI类库介绍在http://allseeing-i.com/ASIHTTPRequest/
添加ASI到你工程中步骤http://allseeing-i.com/ASIHTTPRequest/Setup-instructions
ASI特点
l通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作
l下载的数据,可存储到内存中或直接存储到磁盘中
l能上传本地文件到服务端
l可以方便的访问和操作请求和返回的Http头信息
l可以获取到上传或下载的进度信息,为应用程序提供更好的体验
l支持上传或下载队列,并且可获取队列的进度信息
l支持基本、摘要和NTLM身份认证,在同一会话中授权凭证会自动维持,并且可以存储在Keychain(Mac和iOS操作 系统的密码管理系统)中
l支持Cookie
l当应用(iOS4+)在后台运行时,请求可以继续运行
l支持GZIP压缩数据
l内置的ASIDownloadCache类,可以缓存请求返回的数据,这样即使没有网络也可以返回已经缓存的数据结果
l ASIWebPageRequest –可以下载完整的网页,包括包含的网页、样式表、脚本等资源文件,并显示在UIWebView /WebView中。任意大小的页面都可以无限期缓存,这样即使没有网络也可以离线浏览
l支持客户端证书
l支持通过代理发起Http请求
l支持带宽限制。在iOS平台,可以根据当前网络情况来自动决定是否限制带宽,例如当使 用WWAN(GPRS/Edge/3G)网络时限制,而当使用WIFI时不做任何限制
l支持断点续传
l支持同步和异步请
ASI类库里包括22个文件,4个主要的类ASIHTTPRequest 、ASIFormDataRequest、ASINetworkQueue、ASIDownloadCache,5个支持的类ASIInputStream、ASIDataDecompressor、ASIDataCompressor、ASIAuthenticationDialog、Reachability,4个协议配置文件ASIHTTPRequestDelegate、ASIProgressDelegate、ASICacheDelegate、ASIHTTPRequestConfig.h,这些文件作用在开发文档中都有详细介绍.
在http://allseeing-i.com/ASIHTTPRequest/How-to-use有关于初次接触ASI的简单使用,很有必要看一看,
了解简单的同步请求、异步请求,block块请求,队列请求等其他用法。
用ASI写的一个简单请求数据的Demo:
测试使用的URL是国家气象局API,返回一个json数据
#define URL @"http://www.weather.com.cn/data/sk/101010100.html"
请求得到数据:
-
-
-(IBAction)synchronization_bt:(id)sender{
-
-
NSURL*url=[NSURLURLWithString:URL];
-
ASIHTTPRequest*request=[ASIHTTPRequestrequestWithURL:url];
-
-
[requeststartSynchronous];
-
-
NSError*error=[requesterror];
-
-
if(!error){
-
NSString*response=[requestresponseString];
-
NSLog(@"请求数据:%@",response);
-
}
-
}
-
-
}
-
-
-(IBAction)asynchronous_bt:(id)sender{
-
NSURL*url=[NSURLURLWithString:URL];
-
ASIHTTPRequest*request=[ASIHTTPRequestrequestWithURL:url];
-
[requestsetDelegate:self];
-
-
[requeststartAsynchronous];
-
}
-
-
-
-
-(void)requestFinished:(ASIHTTPRequest*)request
-
{
-
NSString*responseString=[requestresponseString];
-
NSLog(@"请求的String数据:%@",responseString);
-
-
NSData*responseData=[requestresponseData];
-
NSLog(@"请求的Data数据:%@",responseData);
-
-
}
-
-(void)requestFailed:(ASIHTTPRequest*)request
-
{
-
NSError*error=[requesterror];
-
NSLog(@"Error:%@",error.userInfo);
-
-
}
-
-
-(IBAction)blocks_tn:(id)sender{
-
NSURL*url=[NSURLURLWithString:URL];
-
__blockASIHTTPRequest*request=[ASIHTTPRequestrequestWithURL:url];
-
[requestsetCompletionBlock:^{
-
NSString*responseString=[requestresponseString];
-
NSLog(@"请求的String数据:%@",responseString);
-
-
}];
-
[requestsetFailedBlock:^{
-
NSError*error=[requesterror];
-
NSLog(@"Error:%@",error.userInfo);
-
}];
-
[requeststartAsynchronous];
-
}
-
-
-(IBAction)queue_bt:(id)sender{
-
-
if(![selfqueue]){
-
[selfsetQueue:[[[NSOperationQueuealloc]init]autorelease]];
-
}
-
NSURL*url=[NSURLURLWithString:URL];
-
ASIHTTPRequest*request=[ASIHTTPRequestrequestWithURL:url];
-
[requestsetDelegate:self];
-
[requestsetDidFinishSelector:@selector(requestDone:)];
-
[requestsetDidFailSelector:@selector(requestWentWrong:)];
-
[[selfqueue]addOperation:request];
-
}
-
-
-(void)requestDone:(ASIHTTPRequest*)request
-
{
-
NSString*response=[requestresponseString];
-
NSLog(@"请求的数据:%@",response);
-
}
-
-
-(void)requestWentWrong:(ASIHTTPRequest*)request
-
{
-
NSError*error=[requesterror];
-
NSLog(@"Error:%@",error.userInfo);
-
}
将类库加入到工程中不要忘了添加支持的framework框架和库:
SystemConfiguration.framework, MobileCoreServices.framework, CoreGraphics.framework 和 libz.dylib.
源代码:http://download.csdn.net/detail/duxinfeng2010/4947729
正在学习过程中,错误之处请指正,欢迎交流,共同学习;
欢迎转载分享,请注明出处http://blog.csdn.net/duxinfeng2010
分享到:
相关推荐
IOS应用源码——pokeb-asi-http-request-v1.6.2-0-g3cbd8d6.rar
IOS应用源码——pokeb-asi-http-request-v1.8-9-g3af858e.rar
ASIHTTPRequest对CFNetwork API进行了封装,...在iOS平台,可以根据当前网络情况来自动决定是否限制带宽,例如当使用WWAN(GPRS/Edge/3G)网络时限制,而当使用WIFI时不做任何限制 l 支持断点续传 l 支持同步和异步请求
1.改良版的 ASIHTTPRequest 不建议iOS 新手使用 2.有一定的iOS经验你会发现这个版本挺不错的! 谨慎使用,派别之争的 就别喷了无意义!
(1)ASI原理基础知识、规划设计注意事项(文档资料) (2)倍加福、必威、西门子ASI ET200模块等多种产品ASI网关通信程序案例 (3)ASI常见问题、资料手册
iOS--ASI第三方网络请求框架,使用把文件导入项目,并在头文件中引用
解析xml文件的通用类,使用libxml实现边下载边解析,下载使用ASI开源库. 可以设置最外边需要解析的tag
利用asi框架解析html网页,可以截取任何网页的重要字段,显示在ui控件中!
SCM3402ASI具有1/8负载,允许256个SCM3402ASI 收发器并接在同一通信总线上,可实现高达 12Mbps 的无差错数据传输。其工作电压范围为 3.0~3.6 V,具备失效安全(fail-safe)、过温保护、限流保护、过压保护等功能。 ...
快捷方便的请求类 大多数的开发都在使用的一个 开源库 用起来特别顺手
用ASI下载网络视频到存本地沙盒 用自定义的AVPlayer播放 网路视频和本地沙盒视频 清除沙盒里的下载视频 下载进度显示 其实 AVPlayer可以放在cell上的AVPlayerLayer图层上(类似网易视听效果)没时间写了。...
主要是实现了图片的整体上传可选择行上传还有单个图片上传应用到的是asi类库
学习DEMO,对ASI的使用。 ASIHTTPRequest 的常用方式。
ASI网关手册 很不容易下载的有关ASI的手册,很值得拥有
ASI-GSD,用于识别ASI元件,在编程软件界面下可以看到
ASi现场总线使用手册pdf,ASi现场总线使用手册
ASI和SDI的区别 广电领域传输。介绍这2种线的区别。串行传输和异步传输
美国ASI温度记录仪 ASI-L1500B 记录软件 常用型号:ASI-1200 ASI 1100 / 1200 ASI-L1500 ASI-L1508B ASI-L1516B ASI-L1524B ASI-L1532B ASI-L1500B ASI-2900 ASI-L1501B
使用ASIHTTPRequest写的一个简单demo 里面包含了系统同步 异步下载 ASI同步 异步下载图片
ASI共振主图 副图 选股通达信指标公式源码.doc