- 浏览: 2528498 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
jsntghf:
peio 写道这个怎么运行?Ruby On Rails的环境搭 ...
多文件上传之uploadify -
peio:
这个怎么运行?
多文件上传之uploadify -
往事如烟1:
我的项目是自己init了一个原始的project,之后将ver ...
React Native热部署之CodePush -
jsntghf:
往事如烟1 写道我按照你的说明进行,发现app退出之后,在进入 ...
React Native热部署之CodePush -
往事如烟1:
我按照你的说明进行,发现app退出之后,在进入不正确,请问是什 ...
React Native热部署之CodePush
以前,写了一篇关于服务端请求的文章:IOS中请求服务器端方法,使用的是iOS SDK中的API,调用起来比较繁琐,这篇文章主要是关于通过ASIHTTPRequest类库请求服务端的方法。
ASIHTTPRequest是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套API,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中。ASIHTTPRequest适用于基本的HTTP请求,和基于REST的服务之间的交互。
ASIHTTPRequest的功能很强大,主要特色如下:
通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作
下载的数据,可存储到内存中或直接存储到磁盘中
能上传本地文件到服务端
可以方便的访问和操作请求和返回的Http头信息
可以获取到上传或下载的进度信息,为应用程序提供更好的体验
支持上传或下载队列,并且可获取队列的进度信息
支持基本、摘要和NTLM身份认证,在同一会话中授权凭证会自动维持,并且可以存储在Keychain中
支持Cookie
当应用在后台运行时,请求可以继续运行
支持GZIP压缩数据
内置的ASIDownloadCache类,可以缓存请求返回的数据,这样即使没有网络也可以返回已经缓存的数据结果
ASIWebPageRequest可以下载完整的网页,包括包含的网页、样式表、脚本等资源文件,并显示在UIWebView/WebView中。任意大小的页面都可以无限期缓存,这样即使没有网络也可以离线浏览
支持客户端证书
支持通过代理发起Http请求
支持带宽限制。在iOS平台,可以根据当前网络情况来自动决定是否限制带宽,例如当使用WWAN(GPRS/Edge/3G)网络时限制,而当使用WIFI时不做任何限制
支持断点续传
支持同步和异步请求
官网地址:http://allseeing-i.com/ASIHTTPRequest/
如果想在iOS项目中使用ASIHTTPRequest,需要在项目中进行简单的配置。
1、将ASIHTTPRequest的相关文件加入项目中,所需文件列表如下:
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
ASIAuthenticationDialog.h
ASIAuthenticationDialog.m
Reachability.h
Reachability.m
2、将相关的类库加入项目中,列表如下:
SystemConfiguration.framework
MobileCoreServices.framework
CoreGraphics.framework
CFNetwork.framework
libxml2.dylib
libz.dylib
3、Search Paths中的Header Search Paths设置为:${SDK_DIR}/usr/include/libxml2
ASIHTTPRequest有很多功能,所有功能说明都可以在其官方网站的相关文档中查到,本文仅简单介绍一下如何使用ASIHTTPRequest来进行同步Http请求和异步Http请求。
在需要使用ASIHTTPRequest的头文件中加入以下代码:
#import "ASIHTTPRequest.h"
这样就可以在代码中使用ASIHTTPRequest相关的类了。
创建一个同步请求
这是ASIHTTPRequest最简单的一种使用模式,发送startSynchronous消息后即开始在同一线程中执行HTTP请求,线程将一直等待直到请求结束(请求成功或者失败)。通过检查error属性可以判断请求是否成功或者有错误发生。
要获取返回的文本信息,调用responseString方法。如果下载的是二进制文件,例如图片、MP3,则调用responseData方法,可以得到一个NSData对象。
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]; }
创建一个异步请求
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request setDelegate:self]; [request startAsynchronous]; - (void)requestFinished:(ASIHTTPRequest *)request { // 当以文本形式读取返回内容时 NSString *responseString = [request responseString]; // 当以二进制形式读取返回内容时 NSData *responseData = [request responseData]; } - (void)requestFailed:(ASIHTTPRequest *)request { NSString *message = NULL; NSError *error = [request error]; switch ([error code]) { case ASIRequestTimedOutErrorType: message = kAlertMsgTimeoutError; break; case ASIConnectionFailureErrorType: message = kAlertMsgConnectionFailError; break; case ASIAuthenticationErrorType: message = kAlertMsgAuthFailError; break; case ASITooMuchRedirectionErrorType: message = kAlertMsgTooManyRedirect; break; case ASIRequestCancelledErrorType: message = kAlertMsgReqCancelledError; break; case ASIUnableToCreateRequestErrorType: message = kAlertMsgUnableCreateReqError; break; case ASIInternalErrorWhileBuildingRequestType: message = kAlertMsgUnableBuildReqError; break; case ASIInternalErrorWhileApplyingCredentialsType: message = kAlertMsgUnableApplyCredError; break; case ASIFileManagementError: message = kAlertMsgFileManageError; break; case ASIUnhandledExceptionError: message = kAlertMsgUnhandledExcepError; break; case ASICompressionError: message = kAlertMsgCompressionError; break; default: message = kAlertMsgGenericError; break; } if (NULL != message) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:kApplicationTitle message:message delegate:self cancelButtonTitle:kAlertDefaultCancel otherButtonTitles:nil]; [alert show]; } }
- asi-http-request-v1.8.1-78.zip (352 KB)
- 下载次数: 38
发表评论
-
Error watching file for changes: EMFILE
2016-12-15 11:57 1299执行npm start后报错: Error watc ... -
CocoaPods升级1.1.1报错
2016-12-15 08:39 793ERROR: While executing gem .. ... -
Visual Studio Code运行React Native报错
2016-06-13 09:43 1612React Native:0.27.2 React:15 ... -
React Native 0.27.2编译报错this._nativeModule.addListener is not a function
2016-06-12 15:21 3854React Native:0.27.2 React:15 ... -
Unable to resolve module ReactDefaultPerf from
2016-06-02 13:04 2782package.json信息如下: "reac ... -
React Native 0.26.2编译报错Undefined symbols for architecture x86_64
2016-05-26 11:15 2014React Native:0.26.2 React:15. ... -
Failed to update auto layout status: Failed to load designables from path (null)
2016-04-05 22:11 1714确保CocoaPods是0.36.1以上版本,然后在podf ... -
集成微信支付出现Undefined symbols for architecture x86_64错误
2016-03-21 13:22 1751Undefined symbols for architec ... -
React Native热部署之CodePush
2016-01-10 22:27 6240本文使用的环境是Mac OS 10.11.1、Xcode ... -
浅谈React Native中的FlexBox布局
2015-11-17 18:38 4304React Native通过一个基于FlexBox的布局引 ... -
React Native之构建一个简单的列表页
2015-10-23 14:45 2160本文中我们将创建一个简单的电影应用,这个应用将从Rotten ... -
React Native之环境搭建
2015-10-20 16:30 1445本文使用的环境是Mac O ... -
获取图片属性的方法
2015-10-18 20:43 3143很多时候我们需要获 ... -
NSCache的下标用法
2015-09-18 00:19 1213NSCache类和NSDictionary类很相似,也提供 ... -
如何给category添加属性
2015-08-16 10:41 691主要是使用了runtime中的associative机制。 ... -
UITableView的两种重用Cell方法的区别
2015-08-10 13:07 16145UITableView中有两种重用Cell的方法: - ... -
SDImageCache.m报错Unused variable 'fileName'
2015-08-04 21:56 1172GCC手册中的相关解释: unused:This att ... -
Swift调用Objective-C
2015-07-13 23:33 1226Swift调用Objective-C需要一个名为<工程 ... -
使用GCD实现倒计时
2015-07-24 21:47 1084__block int timeout = 60; // ... -
导航栏加分割线的实现
2015-07-01 22:00 1763self.view.backgroundColor = [U ...
相关推荐
ASIHTTPRequest 类库 ASIHTTPRequest功能很强大,主要特色如下: 通过简单的接口,即可完成向服务端提交数据和从服务端获取数据的工作 下载的数据,可存储到内存中或直接存储到磁盘中 能上传本地文件到服务端 可以...
这时ios中的使用asihttp类库上传文件到php服务器,关于php服务器接收文件见我的另一篇文章
ASIHttpRequest是一个广泛使用的Objective-C第三方类库,专为iOS和Mac OS X平台设计,用于处理HTTP请求和网络数据传输。这个库由Blake Watters开发,它简化了在苹果的Cocoa环境中进行网络编程的工作,提供了丰富的...
ASIHttpRequest 是一个流行的开源类库,专为 iOS(iPhone)平台设计,用于处理网络请求。这个类库由 Ben Copsey 创建,它简化了在 Objective-C 中进行 HTTP 请求的任务,是 iPhone 开发者进行网络交互时的常用工具。...
在学习和使用 ASIHTTPRequest 时,开发者应该关注其对多线程、错误处理、网络状态检测等方面的处理,这些都是构建可靠网络应用的基础。同时,也要注意,由于 ASIHTTPRequest 已停止维护,可能不兼容最新的 iOS 版本...
标签“asi”直接指向了ASIHTTPRequest库,这是一个历史悠久且被广泛使用的网络请求框架。尽管现在有了更现代的替代品,如NSURLSession,但ASIHTTPRequest因其简单易用和丰富的特性集,仍有一定的社区支持。 从压缩...
本文将深入探讨iOS中的多线程编程,包括GCD(Grand Central Dispatch)、NSOperation、NSThread的使用,以及异步和同步下载、Block的运用,以及ASIHttpRequest类库的使用。 首先,GCD是Apple推出的一种多线程解决...
ASIHTTPRequest是一个Objective-C类库,用于发送HTTP请求,包括GET、POST、PUT和DELETE等方法。它支持同步和异步请求,可以方便地处理文件上传和下载,并提供了进度回调,以便在应用中实时更新用户界面。 2. **...
7. 测试工具:`Testing with Xcode`提供了一套完整的测试策略,包括SpriteKit在iOS8和OSX10.10上的测试,以及Swift语言的使用;`Faux Pas`是一款Xcode插件,用于检测潜在的代码错误。 8. 应用分析:`App Annie`是...
在描述中提到的"asi类库"指的是ASIHTTPRequest,这是一个已经比较老的HTTP请求库,但在过去被广泛用于iOS应用的网络通信。 ASIHTTPRequest库虽然已不再维护,但其功能强大,支持异步和同步请求,提供了文件上传和...
最近做的不错的一个通讯类库,具有AFNetworking和ASIHTTPRequest双方的优点,甚至功能更丰富一些,但是本人还没有使用过。 下载地址:https://github.com/MugunthKumar/MKNetworkKit Socket 1、CocoaAsyncSocket ...
第一点,它有人更新和维护,而且目前使用者很多,第二点,还是使用者很多,那么他的资料,文档,demo就多,很好找遇到问题好解决。如果不用AFNetworking,还有一种MKNetworkKit也不错,不妨一试。1
└── Pods:项目使用了[CocoaPods](http://code4app.com/article/cocoapods-install-usage)这个类库管理工具 └── json:请求的示例数据请注意,因为使用了Pods,所以请下载完项目后先运行pod install注意...