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 data NSString *responseString = [request responseString]; // Use when fetching binary data NSData *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 类库 ASIHTTPRequest功能很强大,主要特色如下: 通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作 下载的数据,可存储到内存中或直接存储到磁盘中 能上传本地文件到服务端 可以...
这时ios中的使用asihttp类库上传文件到php服务器,关于php服务器接收文件见我的另一篇文章
ASIHttpRequest是一个广泛使用的Objective-C第三方类库,专为iOS和Mac OS X平台设计,用于处理HTTP请求和网络数据传输。这个库由Blake Watters开发,它简化了在苹果的Cocoa环境中进行网络编程的工作,提供了丰富的...
下面将详细介绍 ASIHttpRequest 的核心功能、使用方法以及它在网络处理API中的应用。 一、ASIHttpRequest 的主要特性: 1. **异步请求支持**:ASIHttpRequest 支持异步请求,允许应用程序在等待服务器响应的同时...
ASIHTTPRequest 是一个基于苹果的 CFNetwork 框架开发的开源网络库,它为 iOS 和 Mac OS X 平台提供了简单而强大的 HTTP 请求处理。这个库由 Ben Copsey 创建,旨在简化网络通信任务,尤其在处理异步请求、队列管理...
ASIHTTPRequest 提供了一种简单的方式来发送 HTTP 请求,包括 GET、POST、PUT 和 DELETE 等。它支持异步和同步请求,可以处理文件上传和下载,提供了自动缓存功能,以及易于使用的回调机制。库中的主要类是 `...
- 简单的API:ASIHTTPRequest提供了直观的方法来发起GET、POST、PUT、DELETE等各种HTTP请求。 - 异步请求支持:可以轻松地发起非阻塞的网络请求,避免UI线程被阻塞,提升用户体验。 - 请求队列管理:可以将多个...
在本文中,我们将深入探讨ASIHTTPRequest的核心特性、使用方法和常见应用场景。 1. **核心特性** - **异步请求**:ASIHTTPRequest支持异步HTTP请求,这意味着在请求进行时,应用程序可以继续执行其他任务,提高...
这个库提供了一种简单的方式来发起 HTTP 请求,处理响应,并且在 Objective-C 中进行网络编程时提供了很多便利。在“asihttprequest带demo代码包”中,你将找到一个示例项目,它可以帮助你理解和使用 ASIHTTPRequest...
### ASIHttpRequest库API的介绍和使用 #### 一、ASIHttpRequest库简介 ASIHttpRequest库是专门为iPhone开发设计的一个高效且功能丰富的HTTP网络访问库。它由Core Service开发而成,支持多种HTTP相关的功能,比如...
ASIHttpRequest是iOS应用开发中的一款流行网络请求库,由Alexsander Ivanov开发。这个框架在Objective-C语言环境下,为iOS开发者提供了简单易用的API,用于执行HTTP请求,包括GET、POST、PUT、DELETE等多种HTTP方法...
ASIHTTPRequest 是一个Objective-C编写的网络请求库,用于iOS和Mac OS X平台,它为开发者提供了简单易用的API来处理HTTP请求。这个库在早期的iOS开发中非常流行,因为它封装了网络请求的复杂性,使得开发者可以更加...
ASIHTTPRequest是iOS开发中一款广泛使用的网络请求库,由Sam Soffes开发,它提供了许多高级功能,使得处理HTTP请求变得更加简单。在这个特定的主题中,我们关注的是"ASIHTTPRequest实现资源的下载,断点续传"。断点...
以下是对该框架的详细介绍: ASIHTTPRequest框架的核心功能在于简化HTTP请求的创建和管理,提供了一种直观且强大的方式来发起GET、POST、PUT、DELETE等HTTP请求。它支持异步和同步请求,可以处理文件上传和下载,...
ASIHTTPRequest是一个广泛使用的HTTP请求库,它提供了简单易用的API,使得网络请求操作变得相对简单。而UITableView则是iOS中用于展示列表数据的组件,它支持滚动和动态加载,非常适合用来显示多个下载任务的状态。 ...
ASIHTTPRequest 是一个Objective-C编写的网络请求库,广泛应用于iOS和Mac OS X开发中,它为开发者提供了简单易用的接口来发起HTTP请求。这个源码包包含了ASIHTTPRequest库的完整源代码,对于深入理解网络请求处理...
ASIHTTPRequest是简单易用的,它封装了CFNetwork API。使得与Web服务器通信变得更简单。它是用Objective-C编写的,可以在MAC OS X和iPhone应用中使用。 它适用于执行基本的HTTP请求和互动(或者说是反馈)。...
虽然现在已被更现代的AFNetworking等库取代,但对于学习网络请求原理和历史来说,ASIHTTPRequest仍具有一定的参考价值。 一、ASIHTTPRequest基本概念 1. 请求对象:ASIHTTPRequest是网络请求的核心对象,它封装了...