电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

ios的ASIHTTPRequest学习

12页
  • 卖家[上传人]:fengf****anxue
  • 文档编号:29926849
  • 上传时间:2018-01-26
  • 文档格式:DOC
  • 文档大小:54.50KB
  • / 12 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、ios的ASIHTTPRequest学习ASIHTTPRequest是一款极其强劲的 HTTP访问开源项目。让简单的完成复杂的功能,如异步请求,队列请求,GZIP 压缩,缓存,断点续传,进度跟踪,上传文件,HTTP认证。在新的版本中,还加入了Objective-C闭包Block的支持,让我们的代码更加轻简灵活。 1 同步请求 下面就举例说明它的API用法。 同步意为着线程阻塞,在主线程中使用此方法会使应用Hang住而不响应任何用户事件。所以,在应用程序设计时,大多被用在专门的子线程增加用户体验,或用异步请求代替(下面会讲到)。 - (IBAction)grabURL:(id)sender NSURL *url = NSURL URLWithString: http:/allseeing- ASIHTTPRequest *request = ASIHTTPRequest requestWithURL:url; request startSynchronous; NSError *error = request error; if(!error) NSString *response =

      2、request responseString; a, 用requestWithURL快捷方法获取ASIHTTPRequest 的一个实例b, startSynchronous 方法启动同步访问,c, 由于是同步请求,没有基于事件的回调方法,所以从request 的error 属性获取错误信息。d, responseString,为请求的返回NSString信息。 异步请求 异步请求的好处是不阻塞当前线程,但相对于同步请求略为复杂,至少要添加两个回调方法来获取异步事件。下面异步请求代码完成上面同样的一件事情: - (IBAction)grabURLInBackground:(id)sender NSURL *url = NSURL URLWithString: http:/allseeing- ASIHTTPRequest *request = ASIHTTPRequest requestWithURL:url; request setDelegate:self; request startAsynchronous; - (void) requestFinished:(ASIHTTPRe

      3、quest *)request / Use when fetching text data NSString *responseString = request responseString; / Use when fetching binary data NSData *responseData = request responseData; - (void)requestFailed:(ASIHTTPRequest *)request NSError *error = request error; a,与上面不同的地方是指定了一个 ,并用startAsynchronous来启动网络请求。b,在这里实现了两个delegate的方法,当数据请求成功时会调用requestFinished,请求失败时(如网络问题或服务器内部错误)会调用requestFailed。 队列请求 提供了一个对异步请求更加精准丰富的控制。如,可以设置在队列中,同步请求的连接数。往队列里添加的请求实例数大于maxConcurrentOperationCount时,请求实例将被置为等待,直到前面至少有一个请求完成并出

      4、列才被放到队列里执行。也适用于当我们有多个请求需求按顺序执行的时候(可能是业务上的需要,也可能是软件上的调优),仅仅需要把maxConcurrentOperationCount设为 “1”。 - (IBAction)grabURLInTheBackground:(id)sender if(!self queue) self setQueue:NSOperationQueue alloc init autorelease; NSURL *url = NSURL URLWithString: http:/allseeing- ASIHTTPRequest *request = ASIHTTPRequest requestWithURL:url; request setDelegate:self; request setDidFinishSelector:selector(requestDone:); request setDidFailSelector:selector(requestWentWrong:); self queue addOperation:request;/queue i

      5、s an NSOperationQueue - (void)requestDone:(ASIHTTPRequest *)request NSString *response = request responseString; - (void)requestWentWrong:(ASIHTTPRequest *)request NSError *error = request error; 创建NSOperationQueue,这个Cocoa 架构的执行任务(NSOperation)的任务队列。我们通过 ASIHTTPRequest.h的源码可以看到,此类本身就是一个 NSOperation的子类。也就是说它可以直接被放到中,并被执行。 上面的代码队了队列的创建与添加操作外,其它代码与上一例一样。 请求队列上下文 a,可以设置一个上下文(userInfo)到request对象中,当请求响应完后可以通过访问 request对象的userInfo获取里面的信息b,为每一个请求实例设置不同的setDidFinishSelector / setDidFailSelector的回调方法c,子类化A

      6、SIHTTPRequest,重写requestFinished: 与 failWithProblem:方法 ASINetworkQueues, 它的delegate 提供更为丰富的功能 提供的更多的回调方法如下:a,requestDidStartSelector ,请求发起时会调此方法,你可以在此方法中跟据业务选择性的设置request对象的deleaget。b,requestDidReceiveResponseHeadersSelector,当接受完响应的 Header后设计此方法,这个对下载大数据的时候相当有用,你可以在方法里做更多业务上的处理。c,requestDidFinishSelector ,请求并响应成功完成时调用此方法d,requestDidFailSelector,请求失败e,queueDidFinishSelector ,整个队列里的所有请求都结束时调用此方法。 它是NSOperationQueues的扩展,小而强大。但也与它的父类略有区别。如,仅添加到队列中其实并不能执行请求,只有调用 queue g o才会执行;一个正在运行中的队列,并不需要重复调用 queue

      7、 go 。 默认情况下,队列中的一个请求如果失败,它会取消所有未完成的请求。可以设置 queue setShouldCancelAllRequestsOnFailure:NO 来修 正。 取消异步请求 首先,同步请求是不能取消的。其次,不管是队列请求,还是简单的异步请求,全部调用 request cancel 来取消请求。 取消的请求默认都会按请求失败处理,并调用请求失败delegate。如果不想调用delegate方法,则设置: request clearDelegatesAndCancel; 队列请求中需要注意的是,如果你取消了一个请求,队列会自动取消其它所有请求。如果只想取消一个请求,可以设置队列: queue setShouldCancelAllRequestsOnFailure:NO ;如果想明确取消所有请求: queue cancelAllOperations ; 安全的内存回收建议 request并没有retain你的delegate,所以在没有请求完的时候释放了此delegate ,需要在dealloc方法里先取消所有请求,再释放请求实例,如: - (void)deal

      8、loc request clearDelegatesAndCancel; request release; . superdealloc; 向服务器端上传数据 ASIFormDataRequest ,模拟 Form表单提交,其提交格式与 Header会自动识别。没有文件:application/x-www-form-urlencoded有文件:multipart/form-data ASIFormDataRequest *request = ASIFormDataRequest requestWithURL:url; request setPostValue: request setPostValue: request setFile: request addData:imageData withFileName:forKey:如果要发送自定义数据: ASIHTTPRequest *request = ASIHTTPRequest requestWithURL:url; request appendPostData:This is my data / Default becomes P

      9、OST when you use appendPostData: / appendPostDataFromFile: / setPostBody: request setRequestMethod: /用户自定义数据 字典类型 (可选) request.userInfo= NSDictionarydictionaryWithObject:methodforKey: /post的数据 requestappendPostData:bodydataUsingEncoding:NSUTF8StringEncoding 下载文件 通过设置request的setDownloadDestinationPath,可以设置下载文件用的下载目标目录。首先,下载过程文件会保存在temporaryFileDownloadPath目录下。如果下载完成会做以下事情:1,如果数据是压缩的,进行解压,并把文件放在downloadDestinationPath目录中,临时文件被删除2,如果下载失败,临时文件被直接移到downloadDestinationPath目录,并替换同名文件。 如果你想获取下载中的所有数据,可以实现delegate中的request:didReceiveData:方法。但如果你实现了这个方法,request在下载完后,request并不把文件放在downloadDestinationPath中,需要手工处理。 获取响应信息 信息:status , header, responseEncoding request responseStatusCode; request responseHeaders objectForKey: request responseEncoding; 获取请求进度 有两个回调方法可以获取请

      《ios的ASIHTTPRequest学习》由会员fengf****anxue分享,可在线阅读,更多相关《ios的ASIHTTPRequest学习》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
     
    收藏店铺
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.