[ 流行的网络框架 ] AFN & ASI
1、AFN & ASI(早已经停止更新,但现在许多公司也在使用。)
AFNetWorking地址:https://github.com/AFNetworking/AFNetworking
ASIHTTPRequest地址:https://github.com/paytronix/ASIHTTPRequest
2、AFN与ASI对比
-- AFN
1. 基于 NSURLConnection & NSURLSession 进行的封装
2. 使用简单
3. 提供了自动的序列化 & 反序列化支持!
AFN的优势:
URL直接传字符串
响应回来得到的数据可以半自动反序列化(json可以自动(afn默认json解析),xml需要手动)
代码回调在主线程,不需要关心线程间通讯
用字典传递参数(parameters),不用写在URL里(GET),或请求体里(POST)
根据api文档,修改GET请求和POST请求,不需要关注如何选择
1、断点续传:1. 获取网络文件信息、2. 检查本地文件信息、3. 根据偏移位置下载文件
NSString *range = [NSString stringWithFormat:@"bytes=%llu-", self.currentLength];
[request setValue:range forHTTPHeaderField:@"Range"];
2、多线程分析
3、分段保存(解决内存峰值突增):
NSFileManager:做文件的复制,删除,检查是否存在,创建目录,删除目录,遍历目录...类似于在Finder中的操作
NSFileHandle:针对一个文件做二进制数据的读写操作
技巧:可以利用 MD5 检测文件下载是否正确 !
以文件流的方式写入数据:NSStream也是Socket开发中非常重要的一个环节
技巧:创建一个单例,统一管理全局所有的网络会话
-- ASI
1. 基于 CFNetwork 进行的封装 Core Foundation,是底层的 C 语言的框架,ASI 的效率是跟好的
2. 使用非常灵活,给程序员提供了各种使用的可能和空间!
* 用代理
* 用块代码
* 自定义监听方法
* 自定义代理-> 开发者可以定制专属自己的网络管理工具!
3. 使用难度大
4. MRC的,需要考虑到 ARC & MRC 混编的问题--下边有详解
5. 返回内容只是提供了二进制数据,或者字符串(前提结果确实是字符串!)
ASI的 序列化 和 反序列化 需要程序员自己来!
// ASI通过代理的方式处理异步请求,请求成功、失败都会通知代理
// 代理需要遵守ASIHTTPRequestDelegate协议
PS:通过block回调传值、发送POST请求、文件上传&下载、ASI数据缓存、缓存某个请求 等。
- 实际上ASIHTTPRequest继承自NSOperation,意味着
- 可以将多个ASIHTTPRequest放到NSOperationQueue中,同时管理多个请求
- 可以设置请求之间的依赖
- ASIFormDataRequest继承自ASIHTTPRequest
其他用法:
1、现在是否有网络请求在处理中
[ASIHTTPRequest isNetworkInUse];
2、当正在请求时,是否要在状态栏显示联网状态(转圈圈)
[ASIHTTPRequest setShouldUpdateNetworkActivityIndicator:YES];
3、当应用后台运行时,是否仍然继续处理网络请求
request.shouldContinueWhenAppEntersBackground = YES;
4、设置请求超时后重试的次数
request.numberOfTimesToRetryOnTimeout = 2; // 重试2次
[ 流行的网络框架 ] AFN & ASI的更多相关文章
- Android最流行的网络框架(原创)
Android程序最重要的模块就是网络部分,如何从网络上下载数据,如何将处理过的数据上传至网络,往往是android程序的关键环节. Android原生提供基于HttpClient和Ht ...
- 2016 - 1 - 25 第三方网络框架 AFN的简单使用
AFNetworking 底层是对NSURlSession 和对 NSURLConnect 的包装 1.具体使用方法可以参照github上的主页面,在这里只是举一个文件上传的简单列子 - (void) ...
- Android网络框架之Retrofit + RxJava + OkHttp 变化的时代
1.什么是Retrofit框架? 它是Square公司开发的现在非常流行的网络框架,所以我们在导入它的包的时候都可以看到这个公司的名字,目前的版本是2. 特点: 性能好,处理快,使用简单,Retrof ...
- iOS开发网络篇—使用ASI框架进行文件下载
iOS开发网络篇—使用ASI框架进行文件下载 说明:本文介绍iOS网络编程中经常用到的框架ASI,如何使用该框架进行文件的下载. 一.简单介绍 代码示例: #import "YYViewCo ...
- 流行python服务器框架
流行python服务器框架 1.tonardo---- 多并发.轻量级应用, “非阻塞”的web 容器.类似tomcat.这个大家太熟悉了,就不多说了. 2.Twisted---- Twisted ...
- 几种流行Webservice控制框架
转会[http://blog.csdn.net/thunder4393/article/details/5787121],写的非常好,以收藏. 1 摘要 开发webservice应用程序中 ...
- Android OKHttp网络框架
好久没逛简书了.这周公司的项目也已经愉快的迭代了新版本,对于之前一直存留的东西一直没怎么梳理,今天想说说这两年特别火的网络框架.okhttp我想大部分Android开发者都不陌生,因为它的到来.是我们 ...
- php中流行的rpc框架详解
什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 我的官方群点击此处. 通常我们调用一个php中的方法,比如这样一个函数方 ...
- 关于Unity的网络框架
注:Unity 5.1里引入了新的网络框架,未来目标应该是WOW那样的,现在还只是个P2P的架子. 网络的框架,无非是如何管理网络数据的收发,通信双方如何约定协议.之前做的框架与GameObject无 ...
随机推荐
- cocos2dx-2.x CCFileUtils文件管理分析(2)
于1于,我只是对整体结构进行了分析,然后,2于,我会在一些我们经常使用的分析功能. //获取给定文件名称的全路径 //以下这非常长一段凝视.通过举样例,像我们说明cocos2dx获取文件全路径的规则. ...
- grep在一个特定的文件搜索文件夹keyword
grep -R --include="*.*"(文件名匹配) key(keyword) dir(夹) eg.在当前文件夹搜索xml关键文件172.19.32.22 grep -R ...
- linux于test
订购具体解释
測试标志 代表意义 文件名称.文件类型 -e 该文件名称是否存在 -f 该文件名称是否存在且为file -d 该文件名称是否存在且为文件夹 -b 该文件名称是否存在且为一个block -c 该文件名称 ...
- state-of-the-art implementations related to visual recognition and search
http://rogerioferis.com/VisualRecognitionAndSearch2014/Resources.html Source Code Non-exhaustive lis ...
- HDU 1176 免费馅饼(DP)
职务地址:HDU 1176 以时间为横轴.11个点位纵轴构造一个矩阵.然后利用数字三角形的方法从上往下递推下去. 代码例如以下: #include <iostream> #include ...
- C语言求素数的算法
前言 最后一次是出了素数的问题C语言解决题目(面试),当时用了最粗暴的算法.回来细致參考资料,事实上答案有非常多种: 1,小学生版本号: 推断 x 是否为质数,就从 2 一直算到 x-1. stati ...
- 给AspNetPager分页控件添加bootstrap样式
AspNetPager分页控件算是比较好用的一个分页控件了.想要结合bootstrap使用,官方代码入口 .pagination a[disabled]{ color: #777;cursor: no ...
- js Array 阵列扩展方法
//又来了 Array.prototype.unique = function() { this.sort(); var re=[this[0]]; for(var i = 1; i < thi ...
- uva 10817 - Headmaster's Headache ( 状态压缩dp)
本文出自 http://blog.csdn.net/shuangde800 题目链接: 点击打开链接 题目大意 某校有n个教师和m个求职者,已知每人的工资和能教的课程集合,要求支付最少的工资使得每 ...
- 在win7在结构cocos2d-x v3.2rc0开发环境(For Android)
cocos2d-x 这是现在比较流行的游戏引擎., 因此.本文的目的在于教导新手怎样在win7下建立cocos2dx开发环境, 截止本文,cocos2dx的最新版本号为 v3.2rc0版,我将如果您的 ...