[ 流行的网络框架 ] AFN & ASI

一、AFN & ASI(早已经中止更新,但如今许多公司也在使用。)git

 

  AFNetWorking地址:https://github.com/AFNetworking/AFNetworking程序员

 

  ASIHTTPRequest地址:https://github.com/paytronix/ASIHTTPRequestgithub

 

二、AFN与ASI对比json

-- AFN
1. 基于 NSURLConnection & NSURLSession 进行的封装
2. 使用简单
3. 提供了自动的序列化 & 反序列化支持!api

AFN的优点:
URL直接传字符串
响应回来获得的数据能够半自动反序列化(json能够自动(afn默认json解析),xml须要手动)
代码回调在主线程,不须要关心线程间通信
用字典传递参数(parameters),不用写在URL里(GET),或请求体里(POST)
根据api文档,修改GET请求和POST请求,不须要关注如何选择缓存

 

一、断点续传:1. 获取网络文件信息、2. 检查本地文件信息、3. 根据偏移位置下载文件网络

  NSString *range = [NSString stringWithFormat:@"bytes=%llu-", self.currentLength];多线程

  [request setValue:range forHTTPHeaderField:@"Range"];框架

二、多线程分析异步

三、分段保存(解决内存峰值突增):

  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

其余用法:

一、如今是否有网络请求在处理中

[ASIHTTPRequest isNetworkInUse];

 

二、当正在请求时,是否要在状态栏显示联网状态(转圈圈)

[ASIHTTPRequest setShouldUpdateNetworkActivityIndicator:YES];

 

三、当应用后台运行时,是否仍然继续处理网络请求

request.shouldContinueWhenAppEntersBackground = YES;

 

四、设置请求超时后重试的次数

request.numberOfTimesToRetryOnTimeout = 2// 重试2

相关文章
相关标签/搜索