弃用的异步get和post方法之代理方法
#import "ViewController.h"
#import "Header.h" @interface ViewController () <NSURLConnectionDataDelegate> /**
* 用来存储数据
*/
@property (nonatomic, strong) NSMutableData *resultData; @property (nonatomic, strong) NSMutableArray *dataArray; @end @implementation ViewController // 懒加载
- (NSMutableArray *)dataArray { if (!_dataArray) {
_dataArray = [NSMutableArray array];
}
return _dataArray;
} - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
} #pragma mark - get异步请求
- (IBAction)getAsynchronousRequset:(UIButton *)sender { // 1.创建url
NSURL *url = [NSURL URLWithString:GET_URL]; // 2.创建请求
NSURLRequest *request = [NSURLRequest requestWithURL:url]; // 使用delegate实现
[NSURLConnection connectionWithRequest:request delegate:self]; } #pragma mark - 代理方法
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { // 初始化数据
self.resultData = [NSMutableData data]; } // 开始接收数据(这个方法会重复执行,得到的每段数据拼接在一起就可以了)
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [self.resultData appendData:data];
} // 结束服务器
- (void)connectionDidFinishLoading:(NSURLConnection *)connection { // 进行数据解析
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:self.resultData options:NSJSONReadingAllowFragments error:nil];
NSLog(@"%@", dic);
} #pragma mark - post异步请求
- (IBAction)postAsynchronousRequset:(UIButton *)sender { // 1.创建url
NSURL *url = [NSURL URLWithString:POST_URL]; // 2.创建请求
NSMutableURLRequest *mutableRequest = [NSMutableURLRequest requestWithURL:url]; // 2.5.设置body
// 创建一个连接字符串(这个内容在以后的开发中接口文档都有标注)
NSString *dataStr = POST_BODY; // 对连接字符串进行编码【这一步千万不能忘记】
NSData *postData = [dataStr dataUsingEncoding:NSUTF8StringEncoding]; // 设置请求格式为post请求【在这里POST必须大写】
[mutableRequest setHTTPMethod:@"POST"]; // 设置请求体(body)
[mutableRequest setHTTPBody:postData]; // 代理方法
[NSURLConnection connectionWithRequest:mutableRequest delegate:self];
} #pragma mark - 代理方法
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { // 初始化数据
self.resultData = [NSMutableData data]; } // 开始接收数据(这个方法会重复执行,得到的每段数据拼接在一起就可以了)
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [self.resultData appendData:data];
} // 结束服务器
- (void)connectionDidFinishLoading:(NSURLConnection *)connection { // 进行数据解析
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:self.resultData options:NSJSONReadingAllowFragments error:nil];
NSLog(@"%@", dic);
} @end
弃用的异步get和post方法之代理方法的更多相关文章
- UITableView的全部属性、方法以及代理方法执行顺序,看过之后肯定有收获---董鑫
UITableView-------表视图--继承UIScrollView并遵守NSCoding协议 属性 frame-------------设置控件的位置和大小 backgroundColor-- ...
- 通读AFN②--AFN的上传和下载功能分析、SessionTask及相应的session代理方法的使用细节
这一部分主要研究AFN的上传和下载功能,中间涉及到各种NSURLSessionTask的一些创建的解析和HTTPSessionManager对RESTful风格的web应用的支持,同时会穿插一点NSU ...
- spring5 源码深度解析----- AOP目标方法和增强方法的执行(100%理解AOP)
上一篇博文中我们讲了代理类的生成,这一篇主要讲解剩下的部分,当代理类调用时,目标方法和代理方法是如何执行的,我们还是接着上篇的ReflectiveMethodInvocation类Proceed方法来 ...
- .Net MVC5异步请求Entity Framework 无限循环解决方法
.Net MVC5异步请求Entity Framework 无限循环解决方法 Entity Framework 存在一对多.多对多之间的关系,相互依赖,在返回JSON数据时往往会出现相互引用造成的无限 ...
- Delphi异步编程:匿名线程与匿名方法
异步编程,是项目中非常有用的而且常用的一种方法,大多以线程实现. 而Delphi传统方法使用线程略为烦琐,好在其后续版本中,提供一些方法,简化一些操作. 几个概念: 匿名线程:TAnonymousTh ...
- [C#学习笔记之异步编程模式2]BeginInvoke和EndInvoke方法 (转载)
为什么要进行异步回调?众所周知,普通方法运行,是单线程的,如果中途有大型操作(如:读取大文件,大批量操作数据库,网络传输等),都会导致方法阻塞,表现在界面上就是,程序卡或者死掉,界面元素不动了,不响应 ...
- .NET基础架构方法—DataTableToExcel通用方法
p { display: block; margin: 3px 0 0 0; } --> .NET架构基础方法—DataTableToExcel通用方法(NPOI) 今天封装DataTaleTo ...
- 编写高质量代码改善C#程序的157个建议[为泛型指定初始值、使用委托声明、使用Lambda替代方法和匿名方法]
前言 泛型并不是C#语言一开始就带有的特性,而是在FCL2.0之后实现的新功能.基于泛型,我们得以将类型参数化,以便更大范围地进行代码复用.同时,它减少了泛型类及泛型方法中的转型,确保了类型安全.委托 ...
- C# IComparable接口、IComparer接口和CompareTo(Object x)方法、Compare()方法
在项目中经常会用到字符串比较,但是有时候对字符串的操作比较多,规则各异.比如有的地方我们需要用排序规则,有的地方需要忽略大小写,我们该如何写一个比较容易操作的比较方法呢?重新实现IComparer接口 ...
随机推荐
- Inkpad绘图原理浅析
本文新版本已转移到开源中国,欢迎前往指导. Inkpad是一款非常优秀的iPad矢量绘图软件,保管你一看见就忘不了.我的感觉是“一览众山小”.“相见甚晚”,以至于我写的TouchVG就是“小巫见大巫” ...
- JavaScript 属性描述符
属性描述符(Property Descriptor)是 ES5 之后出现的概念,顾名思义,它用于描述属性应该是什么样,例如是否只读,能否枚举,能否可配置等.所有对象属性均可使用属性描述符来定义. 属性 ...
- PE渲染引擎 二
增加了DOF
- table相关的API
void lua_getglobal (lua_State *L, const char *name);获取lua全局变量,将lua的全局变量global name压栈.堆栈+1 void lua_s ...
- node.js JS对象和JSON字符串之间的转换
JSON.stringify(obj)将JS对象转为字符串. var json = { aa: ['sdddssd'], bb: [ '892394829342394792399', '23894 ...
- sql server 脚本创建数据库邮件
sql server 脚本创建数据库邮件代码: --脚本创建数据库邮件 --1.开启数据库邮件 RECONFIGURE WITH OVERRIDE GO RECONFIGURE WITH OVERRI ...
- [Solution] Microsoft Windows 服务(1) C#创建Windows服务
Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而 ...
- [转]easyui datagrid 批量编辑和提交
web前台主要代码: <script type="text/javascript"> $(function() { var $dg = $("#dg" ...
- 设计模式--中介(Mediator)模式
时隔很长一段时,现在又重温设计模式,上个星期学习<设计模式--代理(Proxy)模式>http://www.cnblogs.com/insus/p/4128814.html. 温故而知新, ...
- 使用事务操作SQLite数据批量插入,提高数据批量写入速度,源码讲解
SQLite数据库作为一般单机版软件的数据库,是非常优秀的,我目前单机版的软件产品线基本上全部替换Access作为优选的数据库了,在开发过程中,有时候需要批量写入数据的情况,发现传统的插入数据模式非常 ...