ASIHTTPRequest类库的简单介绍
1.概述
使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套API,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中。ASIHTTPRequest适用于基本的HTTP请求,和基于REST的服务之间的交互。
2.ASIHTTPRequest功能很强大,主要特色如下:
- l 通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作
- l 下载的数据,可存储到内存中或直接存储到磁盘中
- l 能上传本地文件到服务端
- l 可以方便的访问和操作请求和返回的Http头信息
- l 可以获取到上传或下载的进度信息,为应用程序提供更好的体验
- l 支持上传或下载队列,并且可获取队列的进度信息
- l 支持基本、摘要和NTLM身份认证,在同一会话中授权凭证会自动维持,并且可以存储在Keychain(Mac和iOS操作系统的密码管理系统)中
- l 支持Cookie
- l 当应用(iOS 4+)在后台运行时,请求可以继续运行
- l 支持GZIP压缩数据
- l 内置的ASIDownloadCache类,可以缓存请求返回的数据,这样即使没有网络也可以返回已经缓存的数据结果
- l ASIWebPageRequest –可以下载完整的网页,包括包含的网页、样式表、脚本等资源文件,并显示在UIWebView /WebView中。任意大小的页面都可以无限期缓存,这样即使没有网络也可以离线浏览
- l 支持客户端证书
- l 支持通过代理发起Http请求
- l 支持带宽限制。在iOS平台,可以根据当前网络情况来自动决定是否限制带宽,例如当使用WWAN(GPRS/Edge/3G)网络时限制,而当使用WIFI时不做任何限制
- l 支持断点续传
- l 支持同步和异步请求
3.如何在一个工程中使用ASIHTTPRequest
在源代码的class文件夹中,copy下面的这些文件到你的ios工程中,如果你不确定那个文件是你需要的,你最好全部拷贝到你的工程中
- 添加源代码文件
- ASIHTTPRequestConfig.h
- ASIHTTPRequestDelegate.h
- ASIProgressDelegate.h
- ASICacheDelegate.h
- ASIHTTPRequest.h
- ASIHTTPRequest.m
- ASIDataCompressor.h
- ASIDataCompressor.m
- ASIDataDecompressor.h
- ASIDataDecompressor.m
- ASIFormDataRequest.h
- ASIInputStream.h
- ASIInputStream.m
- ASIFormDataRequest.m
- ASINetworkQueue.h
- ASINetworkQueue.m
- ASIDownloadCache.h
- ASIDownloadCache.m
iPhone projects must also include:
- ASIAuthenticationDialog.h
- ASIAuthenticationDialog.m
- Reachability.h (in the External/Reachability folder)
- Reachability.m (in the External/Reachability folder)
2.添加依赖包CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics and zlib
打开Build Phases tab,展开 Link Binary With Libraries然后点击 + 按钮
选中 CFNetwork.framework ,然后添加进来
重复上述步骤,依次添加:: SystemConfiguration.framework, MobileCoreServices.framework,CoreGraphics.framework and libz.dylib.
4.如何使用相应的API
由于篇幅有限,我只在这里简单介绍同步和异步的方法实现,具体文档详见官方地址如下:http://allseeing-i.com/ASIHTTPRequest/,
1)创建的同步请求:
- (IBAction)grabURL:(id)sender {NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];[request startSynchronous];NSError *error = [request error];if (!error) {NSString *response = [request responseString];} }
2)同步请求在实际应用中很少用到,因为同步的话,实际是执行的主线程,如果网络很慢或请求的数据很大,前台界面会一片空白,所以这时候我们往往会采用异步请求数据:
-(IBAction)grabURLInBackground:(id)sender
{NSURL*url =[NSURL URLWithString:@"http://allseeing-i.com"];ASIHTTPRequest*request =[ASIHTTPRequest requestWithURL:url];[request setDelegate:self];[request startAsynchronous];
}-(void)requestFinished:(ASIHTTPRequest*)request
{// Use when fetching text dataNSString*responseString =[request responseString];// Use when fetching binary dataNSData*responseData =[request responseData];
}-(void)requestFailed:(ASIHTTPRequest*)request
{NSError*error =[request error];
}
3)新版本支持的block
- (IBAction)grabURLInBackground:(id)sender
{NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];[request setCompletionBlock:^{// Use when fetching text dataNSString *responseString = [request responseString];// Use when fetching binary dataNSData *responseData = [request responseData];}];[request setFailedBlock:^{NSError *error = [request error];}];[request startAsynchronous];
}
Note the use of the __block qualifier when we declare the request, this is important! It tells the block not to retain the request, which is important in preventing a retain-cycle, since the request will always retain the block.
ASIHTTPRequest类库的简单介绍相关推荐
- 浏览器html5/css3兼容性检测的javascript类库 - Modernizr简单介绍
为什么80%的码农都做不了架构师?>>> 日期:2012-4-17 来源:GBin1.com 在线演示 本地下载 大家是不是在开发设计过程中遇到如下情况?某些浏览器不支持H ...
- ASIHTTPRequest类库简介
参考来自:http://www.cnblogs.com/dotey/archive/2011/05/10/2041966.html 官方网站: http://allseeing-i.com/ASIHT ...
- IOS学习之 网络编程(10)--简单介绍ASI框架的使用
转载自 http://www.cnblogs.com/wendingding/p/3950027.html 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是A ...
- openresty开发系列10--openresty的简单介绍及安装
openresty开发系列10--openresty的简单介绍及安装 一.Nginx优点 十几年前,互联网没有这么火,软件外包开发,信息化建设,帮助企业做无纸化办公,收银系统,工厂erp,c/s架构偏 ...
- client高性能组件化框架React简单介绍、特点、环境搭建及经常使用语法
[本文源址:http://blog.csdn.net/q1056843325/article/details/54729657 转载请加入该地址] 明天就是除夕了 预祝大家新春快乐 [ ]~( ̄▽ ̄) ...
- php fpm 三个模式_php-fpm运行原理和模式的简单介绍
本篇文章给大家带来的内容是关于php-fpm运行原理和模式的简单介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 运行原理: cgi初始化阶段:分别调用fcgi_init()和 s ...
- webstorm简单介绍,webstrom基本使用
WebStorm混搭svn WebStorm混搭nodeJS 以less和uglify-js为例 如何用npm在root中下载模块 ---------------------------------- ...
- Lombok的注解简单介绍
Lombok的注解简单介绍 背景 我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器.getter.setter.equals.hashcode.toStri ...
- 【软件开发】Java语言的简单介绍
Java语言的简单介绍 一.Java语言的介绍 二.Java的版本 三.JDK的介绍 四.Java API文档 五.Java语言的特点 1. 面向对象 2. 解释性 3. 多线程 4. 可移植性 / ...
最新文章
- 作业32-完成评论功能
- 40亿条/秒!Flink流批一体在阿里双11首次落地的背后
- linux is not unix由来,一些奇怪的 unix 指令名字的由来(转)
- boost signal2 trackable
- 相关插件在项目中使用参考
- 递归计算二叉树的叶子节点个数
- SQL Server 2008安装图解教程
- 工业机器人图册 索罗门采夫_机械手控制电路 机电一体化毕业设计论文.doc
- 软件项目管理 3.1.生存期模型选择
- BFS宽度优先搜索(新冠病毒的传播)
- 互联网域名管理办法发布 域名注册必须实名
- 密码编码学与网络安全———原理与实践(第八版)第三章笔记
- 2015款Mac笔记本安装Windows10系统到外置移动硬盘教程
- 使用Jetpack Compose竟能做出如此漂亮的倒计时APP
- 神经网络算法处理器设计,神经网络是机器算法吗
- paperswithcode 论文阅读与代码复现
- 删除office正版增值计划通知的方法
- c++语言读取txt文件,C++中读写txt文件并分离字符的方法
- rv1126接2053_2593双目推流
- MySQL 5.7.20 Group Relication(组复制)搭建手册
热门文章
- 内存诊断工程搭建及demo测试
- 济南86公里综合管廊,CBD近万地下车位已建成
- 点餐系统mysql设计,外卖点餐系统数据库设计.doc
- 怎样删除计算机中的来宾用户密码,win7怎么删除来宾账户_win7如何删除来宾账户...
- iphone8位置无法连接服务器,iphone8无法连接到app store怎么办?苹果iphone8连接不到app store解决方法...
- python将学生信息保存到文件中_Python学生管理系统-文件保存版
- oracle 连接组件,[2021] node连接oracle数据库示例[使用oracle官方组件]
- 训练第一步:python获取文件下图片
- 字节跳动大数据中心17万服务器硬实力支撑今日头条等产品线(公号回复“字节跳动”下载PDF典型资料,欢迎转发、赞赏支持科普)
- 【渝粤教育】电大中专Windows操作系统 (2)_1作业 题库