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工程中,如果你不确定那个文件是你需要的,你最好全部拷贝到你的工程中

  1. 添加源代码文件
  • 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.frameworkMobileCoreServices.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类库的简单介绍相关推荐

  1. 浏览器html5/css3兼容性检测的javascript类库 - Modernizr简单介绍

    为什么80%的码农都做不了架构师?>>>    日期:2012-4-17  来源:GBin1.com 在线演示  本地下载 大家是不是在开发设计过程中遇到如下情况?某些浏览器不支持H ...

  2. ASIHTTPRequest类库简介

    参考来自:http://www.cnblogs.com/dotey/archive/2011/05/10/2041966.html 官方网站: http://allseeing-i.com/ASIHT ...

  3. IOS学习之 网络编程(10)--简单介绍ASI框架的使用

    转载自 http://www.cnblogs.com/wendingding/p/3950027.html 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是A ...

  4. openresty开发系列10--openresty的简单介绍及安装

    openresty开发系列10--openresty的简单介绍及安装 一.Nginx优点 十几年前,互联网没有这么火,软件外包开发,信息化建设,帮助企业做无纸化办公,收银系统,工厂erp,c/s架构偏 ...

  5. client高性能组件化框架React简单介绍、特点、环境搭建及经常使用语法

    [本文源址:http://blog.csdn.net/q1056843325/article/details/54729657 转载请加入该地址] 明天就是除夕了 预祝大家新春快乐 [ ]~( ̄▽ ̄) ...

  6. php fpm 三个模式_php-fpm运行原理和模式的简单介绍

    本篇文章给大家带来的内容是关于php-fpm运行原理和模式的简单介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 运行原理: cgi初始化阶段:分别调用fcgi_init()和 s ...

  7. webstorm简单介绍,webstrom基本使用

    WebStorm混搭svn WebStorm混搭nodeJS 以less和uglify-js为例 如何用npm在root中下载模块 ---------------------------------- ...

  8. Lombok的注解简单介绍

    Lombok的注解简单介绍 背景   我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器.getter.setter.equals.hashcode.toStri ...

  9. 【软件开发】Java语言的简单介绍

    Java语言的简单介绍 一.Java语言的介绍 二.Java的版本 三.JDK的介绍 四.Java API文档 五.Java语言的特点 1. 面向对象 2. 解释性 3. 多线程 4. 可移植性 / ...

最新文章

  1. 作业32-完成评论功能
  2. 40亿条/秒!Flink流批一体在阿里双11首次落地的背后
  3. linux is not unix由来,一些奇怪的 unix 指令名字的由来(转)
  4. boost signal2 trackable
  5. 相关插件在项目中使用参考
  6. 递归计算二叉树的叶子节点个数
  7. SQL Server 2008安装图解教程
  8. 工业机器人图册 索罗门采夫_机械手控制电路 机电一体化毕业设计论文.doc
  9. 软件项目管理 3.1.生存期模型选择
  10. BFS宽度优先搜索(新冠病毒的传播)
  11. 互联网域名管理办法发布 域名注册必须实名
  12. 密码编码学与网络安全———原理与实践(第八版)第三章笔记
  13. 2015款Mac笔记本安装Windows10系统到外置移动硬盘教程
  14. 使用Jetpack Compose竟能做出如此漂亮的倒计时APP
  15. 神经网络算法处理器设计,神经网络是机器算法吗
  16. paperswithcode 论文阅读与代码复现
  17. 删除office正版增值计划通知的方法
  18. c++语言读取txt文件,C++中读写txt文件并分离字符的方法
  19. rv1126接2053_2593双目推流
  20. MySQL 5.7.20 Group Relication(组复制)搭建手册

热门文章

  1. 内存诊断工程搭建及demo测试
  2. 济南86公里综合管廊,CBD近万地下车位已建成
  3. 点餐系统mysql设计,外卖点餐系统数据库设计.doc
  4. 怎样删除计算机中的来宾用户密码,win7怎么删除来宾账户_win7如何删除来宾账户...
  5. iphone8位置无法连接服务器,iphone8无法连接到app store怎么办?苹果iphone8连接不到app store解决方法...
  6. python将学生信息保存到文件中_Python学生管理系统-文件保存版
  7. oracle 连接组件,[2021] node连接oracle数据库示例[使用oracle官方组件]
  8. 训练第一步:python获取文件下图片
  9. 字节跳动大数据中心17万服务器硬实力支撑今日头条等产品线(公号回复“字节跳动”下载PDF典型资料,欢迎转发、赞赏支持科普)
  10. 【渝粤教育】电大中专Windows操作系统 (2)_1作业 题库