分类: iOS2012-08-12 10:04 7734人阅读 评论(3) 收藏 举报

ASIHTTPRequest是一个第三方开源项目,在现在的IOS应用中多使用到这个开源类库来提供网络操作,相比于SDK提供的网络操作类库,ASIHTTPRequest使用上更加方便、效率更高,同时功能也非常强大。这是ASIHttpRequest的官网:http://allseeing-i.com/ASIHTTPRequest/

以下是官方对ASIHttpRequest的解释:

What is ASIHTTPRequest?

ASIHTTPRequest is an easy to use wrapper around the CFNetwork API that makes some of the more tedious aspects of communicating with web servers easier. It is written in Objective-C and works in both Mac OS X and iPhone applications.

It is suitable performing basic HTTP requests and interacting with REST-based services (GET / POST / PUT / DELETE). The included ASIFormDataRequest subclass makes it easy to submit POST data and files usingmultipart/form-data.

ASIHTTPRequest是在SDK的API中CFNetwork之上封装的一个开源类库,使复杂的网络处理变得简单,ASIHTTPRequest用OC开发,适用于Mac OS X和IOS平台开发。另外它还支持表单数据提交,适合与基于HTTP的REST架构的服务进行交互(使用GET、POST、PUT请求方式)。

1.在项目中集成ASIHTTPRequest

首先到官网上下载项目包,解压后可以看到项目的文件结构如下:

然后就是把该项目添加到我们自己的项目当中,直接将这个文件夹拖拽到我们自己项目的根目录下就可以了,选择拷贝文件到项目选项,然后是添加 一些框架,有CFNetwork.framework,SystemConfiguration.framework,MobileCoreServices.framework,CoreGraphics.framework和libz.1.2.3.dylib(IOS5中为libz.1.2.5.dylib),最后将这些框架拖拽到Framwork文件夹中就可以了,这样就完成了集成ASIHTTPRequest的过程。下面看下工程目录结构:

如果是IOS5的版本,可能集成过程中会遇到一些问题,我也找到了一些解决方案,比如,集成完后可能会遇到编译提示找不到"libxml/HTMLparser.h",解决这个问题可以参考这个链接中所说的方法http://blog.csdn.net/iangelfalls/article/details/7102844

使用ASIHTTPRequest xcode编译提示找不到"libxml/HTMLparser.h",解决方法如下:

1>.在xcode中左边选中项目的root节点,在中间编辑区的搜索框中输入"header search paths",

双击Header Search Paths项,点击加号增加一项并输入"${SDK_DIR}/usr/include/libxml2",

点击done按钮结束.

2>.再次在搜索框中输入"other linker flags",双击Other Linker Flags项,

点击加号增加一项并输入"-lxml2",点击done按钮结束.

好了,到此over.

另外可能会遇到头文件<GHUnitIOS/GHUnit.h>找不到的情况,如果遇到这种问题,将ASIHTTPRequest目录中的Tests目录删除即可,Tests目录下的文件是用GHUnit框架写的一个测试用例,正式使用中不需要用到。

2.使用ASIHTTPRequest进行网络操作

首先,在需要使用该类库的文件中引入头文件

#import "ASIHTTPRequest.h"

然后编写执行网络请求操作的代码:

  1. - (IBAction)startAsycRequest:(id)sender {
  2. NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
  3. __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
  4. //使用OC中新增的bolck语法(块语法),可以实现并行编程
  5. //以下方法是在请求完成后会被调用的块
  6. [request setCompletionBlock:^{
  7. //获取请求返回结果
  8. NSString *response = [request responseString];
  9. NSLog(@"%@",response);
  10. //如果是数据集,可以使用以下方式返回结果
  11. //        NSData *responseData = [request responseData];
  12. }];
  13. //如果请求失败,可以在这里进行处理
  14. [request setFailedBlock:^{
  15. //        NSError *error = [request error];
  16. }];
  17. //开启一个异步请求(这里只说明了异步请求的使用,因为一般情况下的网络请求都采用异步的方式,否则会阻塞UI)
  18. [request startAsynchronous];
  19. }

执行后打印出来的结果是一个网页的完成HTML信息:

IOS学习笔记25—HTTP操作之ASIHTTPRequest的更多相关文章

  1. IOS学习笔记25—HTTP操作之ASIHTTPRequest(一)

    ASIHTTPRequest是一个第三方开源项目,在现在的IOS应用中多使用到这个开源类库来提供网络操作,相比于SDK提供的网络操作类库,ASIHTTPRequest使用上更加方便.效率更高,同时功能 ...

  2. iOS: 学习笔记, 使用FMDatabase操作sqlite3

    使用FMDatabase操作sqlite3数据库非常简单和方便 // // main.m // iOSDemo0602_sqlite3 // // Created by yao_yu on 14-6- ...

  3. IOS学习笔记48--一些常见的IOS知识点+面试题

      IOS学习笔记48--一些常见的IOS知识点+面试题   1.堆和栈什么区别? 答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制:对于堆来说,释放工作由程序员控制,容易产生memor ...

  4. iOS学习笔记-自定义过渡动画

    代码地址如下:http://www.demodashi.com/demo/11678.html 这篇笔记翻译自raywenderlick网站的过渡动画的一篇文章,原文用的swift,由于考虑到swif ...

  5. iOS学习笔记-精华整理

    iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...

  6. iOS学习笔记10-UIView动画

    上次学习了iOS学习笔记09-核心动画CoreAnimation,这次继续学习动画,上次使用的CoreAnimation很多人感觉使用起来很繁琐,有没有更加方便的动画效果实现呢?答案是有的,那就是UI ...

  7. iOS学习笔记总结整理

    来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...

  8. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  9. iOS学习笔记之触摸事件&UIResponder

    iOS学习笔记之触摸事件&UIResponder 触摸事件 与触摸事件相关的四个方法如下: 一根手指或多根手指触摸屏幕 -(void)touchesBegan:(NSSet *)touches ...

随机推荐

  1. GPT vs MBR 分区 ,,, Legacy BIOS vs UEFI BIOS

    MBR与GPT两种磁盘分区格式的区别 http://itoedr.blog.163.com/blog/static/120284297201378114053240 GPT Partition Tab ...

  2. Delphi中的接口和抽象类

    参考:http://blog.csdn.net/xinzheng_wang/article/details/6058643 接口:Interface Delphi中接口中的关键字Interface,但 ...

  3. 【JAVA 文件概述】

    一.概述 使用此类的原因: 该类将文件或者文件夹封装成对象.方便对文件与文件夹的属性信息进行操作.File对象作为参数传递给流的构造函数.要求:使用File类的常用方法. windows平台下,目录分 ...

  4. GoLang搞一个基本的HTTP服务

    慢慢和python的对应一下看看. package main import ( "fmt" "net/http" "strings" &qu ...

  5. Oracle【IT实验室】数据库备份与恢复之二:SQL*Loader

    2.1 基本知识 Oracle 的  SQL* LOADER  可以将外部格式化的文本数据加载到数据库表中.通常 与 SPOOL导出文本数据方法配合使用.     1.命令格式 SQLLDR keyw ...

  6. xcrun: error: active developer path ("/XX") does not exist

    MAC OS 10.9下执行命令 svn --version 报出如下错误: xcrun: error: active developer path ("/Users/username/Do ...

  7. hdu 1063(java写高精度)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1063 思路:最近刚学了java,然后就迫不及待想试试java写大数的好处了,呵呵,果然是很方便啊! i ...

  8. 【项目经验】——JSON.parse() && JSON.stringify()

    我们在做项目的时候,都知道序列化和反序列化,师哥说:"有正就有反,有来就有回!"的确,就是这样.然后我们在这里分享一下JSON.stringify()  和JSON.parse() ...

  9. Intent界面跳转与传递数据

    Activity跳转与传值,主要是通过Intent类,Intent的作用是激活组件和附带数据. intent可以激活Activity,服务,广播三类组件. 本博文讲的是显示意图激活Activity组件 ...

  10. jsp遍历、循环

    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 1. <% Te ...