`
anlulu
  • 浏览: 43440 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ASIHTTPRequest类库的简单介绍

    博客分类:
  • ios
阅读更多

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 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类库(IOS调用REST)

    ASIHTTPRequest 类库 ASIHTTPRequest功能很强大,主要特色如下: 通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作 下载的数据,可存储到内存中或直接存储到磁盘中 能上传本地文件到服务端 可以...

    使用ASIhttprequest类库上传文件到php服务器之iOS客户端方法

    这时ios中的使用asihttp类库上传文件到php服务器,关于php服务器接收文件见我的另一篇文章

    ASIHttpRequest类库

    ASIHttpRequest是一个广泛使用的Objective-C第三方类库,专为iOS和Mac OS X平台设计,用于处理HTTP请求和网络数据传输。这个库由Blake Watters开发,它简化了在苹果的Cocoa环境中进行网络编程的工作,提供了丰富的...

    ASIHttpRequest 类库

    下面将详细介绍 ASIHttpRequest 的核心功能、使用方法以及它在网络处理API中的应用。 一、ASIHttpRequest 的主要特性: 1. **异步请求支持**:ASIHttpRequest 支持异步请求,允许应用程序在等待服务器响应的同时...

    ASIHTTPRequest使用介绍

    ASIHTTPRequest 是一个基于苹果的 CFNetwork 框架开发的开源网络库,它为 iOS 和 Mac OS X 平台提供了简单而强大的 HTTP 请求处理。这个库由 Ben Copsey 创建,旨在简化网络通信任务,尤其在处理异步请求、队列管理...

    改进版 iOS 网络请求类库ASIHTTPRequest

    ASIHTTPRequest 提供了一种简单的方式来发送 HTTP 请求,包括 GET、POST、PUT 和 DELETE 等。它支持异步和同步请求,可以处理文件上传和下载,提供了自动缓存功能,以及易于使用的回调机制。库中的主要类是 `...

    ASIHttpRequest

    - 简单的API:ASIHTTPRequest提供了直观的方法来发起GET、POST、PUT、DELETE等各种HTTP请求。 - 异步请求支持:可以轻松地发起非阻塞的网络请求,避免UI线程被阻塞,提升用户体验。 - 请求队列管理:可以将多个...

    ASIHTTPRequest

    在本文中,我们将深入探讨ASIHTTPRequest的核心特性、使用方法和常见应用场景。 1. **核心特性** - **异步请求**:ASIHTTPRequest支持异步HTTP请求,这意味着在请求进行时,应用程序可以继续执行其他任务,提高...

    asihttprequest带demo代码包

    这个库提供了一种简单的方式来发起 HTTP 请求,处理响应,并且在 Objective-C 中进行网络编程时提供了很多便利。在“asihttprequest带demo代码包”中,你将找到一个示例项目,它可以帮助你理解和使用 ASIHTTPRequest...

    ASIHttpRequest库API的介绍和使用

    ### ASIHttpRequest库API的介绍和使用 #### 一、ASIHttpRequest库简介 ASIHttpRequest库是专门为iPhone开发设计的一个高效且功能丰富的HTTP网络访问库。它由Core Service开发而成,支持多种HTTP相关的功能,比如...

    ASIHttpRequest ios开发框架

    ASIHttpRequest是iOS应用开发中的一款流行网络请求库,由Alexsander Ivanov开发。这个框架在Objective-C语言环境下,为iOS开发者提供了简单易用的API,用于执行HTTP请求,包括GET、POST、PUT、DELETE等多种HTTP方法...

    ASIHTTPRequest网络API

    ASIHTTPRequest 是一个Objective-C编写的网络请求库,用于iOS和Mac OS X平台,它为开发者提供了简单易用的API来处理HTTP请求。这个库在早期的iOS开发中非常流行,因为它封装了网络请求的复杂性,使得开发者可以更加...

    ASIHTTPRequest断点续传

    ASIHTTPRequest是iOS开发中一款广泛使用的网络请求库,由Sam Soffes开发,它提供了许多高级功能,使得处理HTTP请求变得更加简单。在这个特定的主题中,我们关注的是"ASIHTTPRequest实现资源的下载,断点续传"。断点...

    ASIHTTPRequest框架

    以下是对该框架的详细介绍: ASIHTTPRequest框架的核心功能在于简化HTTP请求的创建和管理,提供了一种直观且强大的方式来发起GET、POST、PUT、DELETE等HTTP请求。它支持异步和同步请求,可以处理文件上传和下载,...

    ASIHTTPRequest+UITableView实现多个下载任务

    ASIHTTPRequest是一个广泛使用的HTTP请求库,它提供了简单易用的API,使得网络请求操作变得相对简单。而UITableView则是iOS中用于展示列表数据的组件,它支持滚动和动态加载,非常适合用来显示多个下载任务的状态。 ...

    ASIHTTPRequest 源码

    ASIHTTPRequest 是一个Objective-C编写的网络请求库,广泛应用于iOS和Mac OS X开发中,它为开发者提供了简单易用的接口来发起HTTP请求。这个源码包包含了ASIHTTPRequest库的完整源代码,对于深入理解网络请求处理...

    IOS ASIHttpRequest资源包

    ASIHTTPRequest是简单易用的,它封装了CFNetwork API。使得与Web服务器通信变得更简单。它是用Objective-C编写的,可以在MAC OS X和iPhone应用中使用。 它适用于执行基本的HTTP请求和互动(或者说是反馈)。...

    ASIHTTPRequest网路请求

    虽然现在已被更现代的AFNetworking等库取代,但对于学习网络请求原理和历史来说,ASIHTTPRequest仍具有一定的参考价值。 一、ASIHTTPRequest基本概念 1. 请求对象:ASIHTTPRequest是网络请求的核心对象,它封装了...

Global site tag (gtag.js) - Google Analytics