如何使用来创建一个请求 asihttprequest ipv6像下面

ASIHTTPRequest框架使用总结系列之阿堂教程2(同步请求)
从本篇开始,阿堂结合一些具体代码来说明。在ASIHTTPRequest框架中,与http请求相关的类有ASIHTTPRequest &和 ASIFormDataRequest,其中最常用的是&ASIHTTPRequest ,ASIFormDataRequest 是ASIHTTPRequest &的子类,可以发送html类似的表单数据,也可以上传数据,默认采用其它httpy请求方式。它们都可以进行异步或同步请求。
&&&&&&从性能和用户体验来说,阿堂是不建议用同步方式的,建议用异步方式。就是说在主线程中一般要用异步方式,在子线程中要用同步方式。不过从技术学习的角度,这里阿堂还是要介绍get和post 的同步方式的写法。
一.实现get同步请求
代码一般写法如下
-(void)startRequest
&&&&NSString&*strURL = [[NSString&alloc]initWithFormat:@"/service/mynotes/webservice.php?email=%@&type=%@&action=%@",@"",@"JSON",@"query"];
NSURL&*url = [NSURL&URLWithString:[strURL&URLEncodedString]];
&&&&ASIHTTPRequest&*request = [ASIHTTPRequest&requestWithURL:url];
&&&&[request&startSynchronous]; &//同步请求&
&&&&NSLog(@"请求完成...");
&&&&NSError&*error = [request&error];
//如果错误对象不为空,说明这个请求过程出现了错误&
&&&&if&(!error) {
&&&&&&&&//NSString *response = [request responseString];
&&&&&&&&NSData&*data&&= [request&responseData];
//返回值为NSData,这种类型适合&NSJSONSerialization解析&
//如果想返回字符串,可以用&NSString&*data&&= [request&responseString];
&&&&&&&&NSDictionary&*resDict = [NSJSONSerialization&JSONObjectWithData:dataoptions:NSJSONReadingAllowFragments error:nil];
&&&&&&&&[self&reloadView:resDict];
//重新加载表视图
-(void)reloadView:(NSDictionary*)res
&&&&NSNumber&*resultCodeObj = [res&objectForKey:@"ResultCode"];
&&&&if&([resultCodeObj&integerValue] &=0)
&&&&&&&&self.listData&= [res&objectForKey:@"Record"];
&&&&&&&&[self.tableView&reloadData];
&&&&}&else&{
&&&&&&&&NSString&*errorStr = [resultCodeObj&errorMessage];
&&&&&&&&UIAlertView&*alertView = [[UIAlertView&alloc]&initWithTitle:@"错误信息"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&message:errorStr
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&delegate:nil
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&cancelButtonTitle:@"OK"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&otherButtonTitles:&nil];
&&&&&&&&[alertView&show];
使用ASIHTTPRequest类时,需要引入头文件 ASIHTTPRequest.h
二.实现post同步请求
-(void)startRequest
&&&&NSString&*strURL =&@"/service/mynotes/webservice.php";
NSURL&*url = [NSURL&URLWithString:[strURL&URLEncodedString]];
&&&&ASIFormDataRequest&*request = [ASIFormDataRequest&requestWithURL:url];
&&&&[request&setPostValue:@""&forKey:@"email"];
&&&&[request&setPostValue:@"JSON"&forKey:@"type"];
&&&&[request&setPostValue:@"query"&forKey:@"action"];
&&&&[request&startSynchronous];
&&&&NSLog(@"请求完成...");
&&&&NSError&*error = [request&error];
&&&&if&(!error) {
&&&&&&&&//NSString *response = [request responseString];
&&&&&&&&NSData&*data&&= [request&responseData];
&&&&&&&&NSDictionary&*resDict = [NSJSONSerialization&JSONObjectWithData:dataoptions:NSJSONReadingAllowFragments error:nil];
&&&&&&&&[self&reloadView:resDict];
//重新加载表视图
-(void)reloadView:(NSDictionary*)res
&&&&NSNumber&*resultCodeObj = [res&objectForKey:@"ResultCode"];
&&&&if&([resultCodeObj&integerValue] &=0)
&&&&&&&&self.listData&= [res&objectForKey:@"Record"];
&&&&&&&&[self.tableView&reloadData];
&&&&}&else&{
&&&&&&&&NSString&*errorStr = [resultCodeObj&errorMessage];
&&&&&&&&UIAlertView&*alertView = [[UIAlertView&alloc]&initWithTitle:@"错误信息"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&message:errorStr
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&delegate:nil
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&cancelButtonTitle:@"OK"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&otherButtonTitles:&nil];
&&&&&&&&[alertView&show];
> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!
在前年,阿堂在&IOS开发系列之阿堂教程:玩转IPhone客户端和Web服务端交互(客户端)实践&一文中,对于ASIHTTPRequest框架有过一些介简单绍,具体链接地址见.cn/s/blog_4c925dca01011l1s.html.近来阿堂有点空闲时,决定再作些详细的系列介绍,因为这个框架确实还算是 ...
在上一节中,阿堂和网友们分享了ASIHTTPRequest框架对于get,post的同步请求方式.很显然,如果网速比较慢,查询的时候会一直很黑屏,直到请求结束界面才出现结果,这样用户体验肯定很不好了.正如上节阿堂所说,同步请求一般只是在某个子线程中使用,而不在主线程中使用.
ASIHTTPRequest和ASIFormDataRequest ...
在上篇文章中,阿堂和网友们分享了如何用ASIHTTPRequest框架下载数据的实例,本篇阿堂将数据介绍如何用ASIHTTPRequest框架上传数据的应用实例.
数据上传是通过ASIHTTPRequest类实现的.前面提到,ASIFormDataRequest相当于html的表单,当用户通过submit按钮提交给服务器.因此,ASIFormDa ...
从本篇开始,阿堂准备进一步介绍ASIHTTPRequest框架下载数据和上传数据的实际应用.
为了实现多线程并发请求网络能力,ASIHTTPRequest被设计成 NSOperation的子类.ASINetworkQueue被设计成NSOpertaionQueue的子类.如果NSOpertaionQueue是线程管理器,NSOperation ...
说到ios的应用开发,我们不能不提到web server服务端,如果没有服务端的支持,ios应用开发就没有多大意义了,因为从事过手机开发的朋友都知道(Android也一样),大量复杂业务的处理和数据库的处理,其实大部分都是在服务端来完成的,因为iphone客户端的资源是非常有限的,象内存,多线程处理等.我们更多的是把Iphone/ipad等作为一个终端和载体 ...
凡是要从事或正在从事苹果的IOS开发的朋友,必定听说或者用过push技术.实际上玩过或现在正在用iphone,ipad系列终端的朋友,也必定会感受到推送技术带来的便捷.比如说,我们只要iphone在开机的情况下,就会定时或不定时收到一些自动弹出的消息,如天气预报,易网新闻之类的信息.当然android手机,同样也可以实现push技术.,下面是阿堂测试的在我的 ...
谈到IOS的开发,不能不说 到一个问题,如何配置和构建一个IOS的开发环境!我下面要说的主要是针对没有MAC Apple机的网友,如何安装和配置一个属于自己的IOS开发环境.如果已经有MAC 苹果机的网友,请忽略此文.因为有MAC 苹果机,就只需要安装XCODE的IDE开发工具就行了.
下面是网络时空(阿堂)的本地本本上的安装示意图.
转自:/iOS_iPhone-iOS_iPhone%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88%97%E3%80%81%E4%BB%A3%E7%A0%81%E6%95%99%E7%A8%8B----___%E6%8C%81%E7%BB%AD%E6%9B%B4%E6%96%B0%E4%B8%AD_ ...<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&IOS(716)
首先,要想在ios项目中使用ASIHttpRequest,必须添加下列框架和类库:
CFNetwork.frameworkSystemConfiguration.frameworkMobileCoreServices.frameworkCoreGraphics.frameworklibz.dylib
下面是我们今天要完成的任务:
下载指定链接的zip压缩文件存放在Documents目录下支持断点续传显示下载进度解压到指定目录
那就开始吧,首先我们要创建一个ASINetworkQueue全局队列,队列里可以添加请求,虽然今天只会用到一个请求,但我们迟早会用到队列,不妨现在就开始创建:
紧接着创建我们的下载请求:
由于我们没有设置代理方法,request会执行下列默认代理方法:
//请求开始
- (void)requestStarted:(ASIHTTPRequest *)
//请求收到响应的头部,主要包括文件大小信息,下面会用到
- (void)request:(ASIHTTPRequest *)request didReceiveResponseHeaders:(NSDictionary *)responseH
//请求将被重定向
- (void)request:(ASIHTTPRequest *)request willRedirectToURL:(NSURL *)newURL;
//请求完成
- (void)requestFinished:(ASIHTTPRequest *)
//请求失败
- (void)requestFailed:(ASIHTTPRequest *)
//请求已被重定向
- (void)requestRedirected:(ASIHTTPRequest *)
下面是我们对头部信息的处理
这是打印的结果:
“Accept-Ranges” =
“Content-Length” = 4380152;
“Content-Type” = “application/x-zip-compressed”;
Date = “Fri, 25 Nov :20 GMT”;
Etag = “\”16d81c5cba6c71:78c\”&;
“Last-Modified” = “Sun, 03 Jun :52 GMT”;
Server = “Microsoft-IIS/6.0″;
“X-Powered-By” = “ASP.NET”;
我们可以从中看到文件大小等一些请求信息,这时request自己也知道了文件大小,所以我们直接使用request的contentLength属性,放心,大小是一样的!
经过测试,缓存文件是在收到头部后创建的。
这是处理进度的方法(request会自动调用该方法):
这样我们就可以看到进度了:
界面比较简陋,见笑了。。。
下面是我们的暂停方法
你可能注意到了一个问题,因为我们的队列里只有一个请求,所以很容易获取。如果请求多了,我们应该怎么区分队列里的请求呢?有两个方法:
设置request的tag属性,就像UIView的tag一样方便,但是扩展性不强;设置request的userInfo属性,它是个NSDictionary对象,下面不用我说了吧。
还有一件事,我们使用了clearDelegatesAndCancel方法来取消请求,我们本可以用cancel方法来达到同样的目的,但后者会使request触发代理方法requestFailed:,而前者会首先重置request的所有代理然后执行cancel方法,所以不会触发代理方法。
这里还要说一下,如果你的request代理在request被取消之前释放,那么代理方法被触发的时候就会crash!如果必须释放你的代理,请确定执行了clearDelegatesAndCancel方法!
还应该注意,这里说是暂停,其实request已经完全被取消了!下面说说断点续传是怎么回事。
其实,断点续传的功能我们在上面的代码里已经实现了。不信?
因为我们之前开启了断点续传,并且设置了缓存路径,所以request取消时就会在缓存文件里打断点,当我们在次执行上面的startDownload方法时,缓存路径还是之前的缓存路径,request会自动从缓存文件中的断点后开始下载,头部中的文件大小&#20540;也是从断点之后开始算的。神奇吧,ASIHTTPRequest已经为你打点好了一切。
继续,当请求完成时,也就是我们的文件已经下载好了的时候,下载好的文件会在我们之前指定的下载路径下生成,同时缓存文件会被删除,具体谁先谁后目前还没有弄清楚。
现在我们的压缩文件已经下载好了,可怎么打开呢,双击?NO,继续:
为了使用解压缩,我引用了第三方类库:
解压缩的代码如下:
OK!解压成功,现在应该可以看到解压后的文件了:
大功告成!!!
现在回头看看一开始的任务:
下载指定链接的zip压缩文件存放在Documents目录下支持断点续传显示下载进度解压到指定目录
没错都完成了!下面是我的项目文件,里面添加了删除和阅读功能:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1316966次
积分:14156
积分:14156
排名:第610名
原创:213篇
转载:591篇
评论:114条
(3)(29)(2)(2)(5)(2)(5)(3)(26)(40)(3)(7)(15)(3)(5)(11)(34)(15)(13)(4)(8)(10)(31)(26)(13)(13)(38)(37)(4)(6)(27)(14)(17)(40)(48)(35)(11)(2)(34)(57)(13)(24)(60)(19)ASIHTTPRequest中文入门教程全集-中国学网-中国IT综合门户网站-提供健康,养生,留学,移民,创业,汽车等信息
ASIHTTPRequest中文入门教程全集
来源:互联网 更新时间: 22:04:44 责任编辑:王亮字体:
目录&&3&第&&1&&章&&创建和运行请求&&5&1.1.&&创建一个同步请求&&5&1.2.&&创建一个异步请求&&5&1.3.&&使用程序块(blocks )&&6&1.4.&&使用队列&&6&1.5.&&在委托方法中处理多个请求的成功和失败&&7&1.6.&&关于ASINetworkQueues&&7&1.7.&&取消一个异步请求&&8&1.8.&&安全处理委托在请求完成前释放的情况&&8&第&&2&&章&&发送数据&&10&2.1.&&发送请求头&&10&2.2.&&用ASIFormDataRequest 发送一个表单&&10&2.3.&&put 方法和自定义 post&&10&第&&3&&章&&下载数据&&12&3.1.&&将响应数据直接下载为文件&&12&3.2.&&处理收到的响应数据&&12&3.3.&&读取HTTP 状态码&&12&3.4.&&读取响应头&&12&3.5.&&处理文本编码&&12&3.6.&&处理重定向&&13&第&&4&&章&&跟踪进度&&14&4.1.&&介绍&&14&4.2.&&跟踪单个请求的下载进度&&14&4.3.&&跟踪一组请求的下载进度&&14&4.4.&&跟踪单个请求的上传进度&&15&4.5.&&跟踪一组请求的上传进度&&15&4.6.&&精确进度vs 简单进度 15&4.6.1.&&简单请求&&16&4.6.2.&&精确进度&&16&4.7.&&自定义进度跟踪&&16&
相关文章:
上一篇文章:下一篇文章:
最新添加资讯
24小时热门资讯
Copyright &#169; 2004- All Rights Reserved. 中国学网 版权所有
京ICP备号-1 京公网安备02号

我要回帖

更多关于 asihttprequest 使用 的文章

 

随机推荐