iOS网络编程-ASIHTTPRequest异步请求
我们运行程序,如果网速很慢,查询的时候会一直黑屏,直到请求结束画面才出现,这样用户体验很不好。因此同步请求一般只是在某个子线 程中使用,而不在主线程中使用。异步请求的用户体验要比同步请求好,因此一般情况下异步请求用的很多。等待过程中在状态栏上会出现网络等待指示器的经典旋 转小图标,而使用ASIHTTPRequest异步请求就实现这些效果,不用自己额外编写代码。
ASIHTTPRequest和ASIFormDataRequest两个请求类都可以发送异步请求,ASIFormDataRequest继承了 ASIHTTPRequest异步请求方法,所以我们重点介绍ASIHTTPRequest的异步请求。异步请求后通过回调委托对象的方 法:requestFinished:和requestFailed:实现。修改主视图控制器MasterViewController.m的 startRequest方法如下:
-(void)startRequest NSString *strURL = [[NSString alloc] initWithFormat: @”http://iosbook3/mynotes/webservice.php?email=%@ type=%@ action=%@”, @” 你的iosbook1.com用户邮箱 ”,@”JSON”,@”query”]; NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]]; ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; [request setDelegate:self]; ① [request startAsynchronous]; ② - (void)requestFinished:(ASIHTTPRequest *)request ③ NSData *data = [request responseData]; NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; [self reloadView:resDict]; - (void)requestFailed:(ASIHTTPRequest *)request ④ NSError *error = [request error]; NSLog(@”%@”, [error localizedDescription]); }
第①行代码[request setDelegate:self]设置委托对象为self,然后在第②行[request startAsynchronous]发起异步请求,服务器端返回成功则回调第③行的requestFinished:方法,失败则回调第④行的 requestFailed:方法,它们的参数都是ASIHTTPRequest类型。这两个方法是默认的回调方法,我们也可以自定义回调方法。因此上面 的代码也可以改为如下形式:
-(void)startRequest [request setDidFinishSelector:@selector(requestSuccess:)]; [request setDidFailSelector:@selector(requestError:)]; [request startAsynchronous]; - (void)requestSuccess:(ASIHTTPRequest *)request NSData *data = [request responseData]; NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; [self reloadView:resDict]; - (void)requestError:(ASIHTTPRequest *)request NSError *error = [request error]; NSLog(@”%@”, [error localizedDescription]); }
通过请求对象的setDidFinishSelector:方法指定要回调成功方法,setDidFailSelector:方法指定要回调的失败方法。
在异步请求中往往为了使代码更加整洁可以使用代码块(Block),在代码块中指定回调方法。使用了代码的主视图控制器MasterViewController.m的startRequest方法如下:
-(void)startRequest NSString *strURL = [[NSString alloc] initWithFormat: @”http://iosbook3/mynotes/webservice.php?email=%@ type=%@ action=%@”,@” 你的iosbook1.com用户邮箱 ”,@”JSON”,@”query”]; NSURL *url = [NSURL URLWithString:[strURL URLEncodedString]]; __weak ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; ① [request setCompletionBlock:^{ ② NSData *data = [request responseData]; ③ NSDictionary *resDict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil]; [self reloadView:resDict];
iOS - ASIHTTPRequest 网络请求 使用 iOS SDK 中的 HTTP 网络请求 API,相当的复杂,调用很繁琐,ASIHTTPRequest 就是一个对 CFNetwork API 进行了封装,并且使用起来非常简单的一套 API,外号 “HTTP终结者”,用 Objective-C 编写,运行效率很高,可以很好的应用在 Mac OS X 系统和 iOS 平台的应用程序中,ASIHTTPRequest 适用于基本的 HTTP 请求,和基于 REST 的服务之间的交互。
最近开始做自己app的服务器,因为正在参与的公司项目用的是springMVC,干脆拿这个做服务器,iOS端采用第三方鼎鼎大名的ASIHTTPRequest(但是已停更很久),经过一天折腾,终于实现简单的图片上传
p "feed-item-img" target="_blank" href="https://developer.aliyun.com/article/533749">
iOS通过ASIHTTPRequest提交JSON数据 先验知识——什么是ASIHTTPRequest? 使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套API,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中。
IOS开发---菜鸟学习之路--(十二)-利用ASIHTTPRequest进行异步获取数据 想要实现异步获取的话我这边了解过来有两个非常简单的方式 一个是利用ASIHTTPRequest来实现异步获取数据 另一个则是利用MBProgressHUD来实现异步获取数据 本章就先来讲解如何利用ASIHTTPRequest类来实现异步数据获取 首先大家需要百度一下ASIHTTPRequest 然后看一下百度里搜到的那些文章(不要问具体是那篇,因为我发现百度搜过来的东西全部都是一样的,所以。
iOS网络编程-ASIHTTPRequest小例子-数据请求队列 p strong 实例:请求队列 /strong /p p 我们通过一个例子介绍一下请求队列使用,我们设计了一个应用,用户点击GO按钮从服务器同时下载两张图片显示在画面中。 /p p align= center a href= http://www.iosbook3.com/wp-content/uploads/2013/03/7.jpg data-mce-href= h
iOS网络编程-ASIHTTPRequest框架同步请求 在ASIHTTPRequest框架中与HTTP请求相关的类有:ASIHTTPRequest和ASIFormDataRequest,其中最常用的是ASIHTTPRequest,ASIFormDataRequest是ASIHTTPRequest的子类,ASIFormDataRequest可以发送类似与HTML表单数据,也可以上传数据,默认采用POST请求方法。也可以其它的HTTP请求方法。它们都可
关东升 国内著名iOS/Cocos技术作家,iOS技术顾问,Cocos最有价值专家(CVP),智捷课堂首席培训专家。担任51CTO社区iOS技术顾问。 著有多部移动开发畅销书。
相关文章
- AnyMP4 iOS Cleaner for mac(IOS文件清理工具)v1.0.16激活版
- OpenSocket是Linux和安卓用epoll、Win32用IOCP、iOS和Mac用kqueue的高性能网络库
- iOS App上架到appStore
- ios设备开发教程-利用app申请ios开发证书及描述文件
- iOS APP上架App Store其中一个步骤就是要把ipa文件上传到App Store
- 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)
- iOS网络多线程 —实现网络加载图片详解手机开发
- ios网络编程详解手机开发
- iOS视图翻页过渡效果详解手机开发
- iOS开发笔记 – 网络篇详解手机开发
- iOS开发笔记 – 常用第三方库整理详解手机开发
- iOS开发系列课程(09) — 滚动视图详解手机开发
- 苹果 iOS/iPadOS 15、macOS 12 公测版 Beta 3 更新
- Linux下安装iOS:解决方案(linux安装ios)
- 把 Linux 安装到 iOS 设备上的步骤(ios安装linux)
- Google的J2ObjC工具可以将Java代码转换为iOS的Objective-C
- IOS上可以安装Oracle吗(ios能装oracle吗)
- 移动端iOS技术实现Oracle数据库连接(ios联接oracle)
- iOS 轻松登录 Oracle 数据库(ios 登陆oracle)
- IOS系统有支持Oracle吗(ios支持oracle吗)
- 阿里上线权益通证“麻吉宝”,iOS版三小时即下线
- 新版iOS 15与iPadOS 15开发人员工具已更侧重5G体验
- 苹果尴尬了: iOS 10.2.1 被爆致命 bug,怎么办?(附建议及测试视频)