网络编程之AFNetwork

AFN监听网络状态



ASI


》ASIHTTPRequest,外号http终结者

》基于底层CFNetwork框架,效率高

》停止更新,潜在bug无人解决

》很多公司旧项目在用,

》老程序员必备


》基本使用

1 设置非arc环境 -fno-objc-arc

2 添加dylib动态库

                            

3 创建请求对象

4 开始同步请求

5 判断是否请求成功

NSString *error = [request error]


6 获取服务器响应数据

[request responseData]

[request responseString]


7 设置代理,实现代理方法监控请求过程

注意:实现了didReceiveData代理方法responseData\responseString属性将被忽略,不能通过这两个属性获取数据


》其它用法

1 创建请求

2 开始异步请求

[request startAsynchronous]

3 实现block,通过block代码控制请求


注意:1. ASI同时设置block和实现代理方法,block和代理都会调用,先调用代理方法再调用block。

2. ASI还可以自己定义请求过程各阶段的监听方法

通过响应码判断是否请求成功


》ASI发送POST请求 ASIFormDataRequest

1 创建请求,使用ASIFormDataRequest实例即表示post请求

2 设置参数setPostValue设置单值参数,addPostValue设置多值参数

3 开始请求

4 设置监听


》ASI文件下载(GET)

1 创建请求对象

2 设置文件存位置

3 开始请求

4 设置代理监听下载过程

5 实现代理方法

6 直接让progressView成为reqeust的代理,显示下载进度

7 设置断点续传,

  7-1 设置支持断点

  7-2 设置临时路径



》ASI文件上传

1 创建post请求对象

2 设置参数

  2-1 设置文本参数

  2-2 设置文件参数

  2-3 设置监听上传进度

3 开始异步请求

4 设置监听



问题:在非ARC环境中,控制器销毁了,请求对象还在继续,当请求返回调用控制器的代理方法时,将出现野指针错误
解决:控制器销毁时将请求对象也销毁

》判断是否有网络请求

[ASIHTTPRequest isNetworkInUse]

》状态栏是否显示联网状态(菊花圈)

[ASIHTTPRequest setShouldUpdateNetworkActivityIndicator:YES]

》后台运行

request.shouldContinueWhenAppEnterBackgroud;

》请求超时重试次数

request.numberOfTimesToRetryOnTimeout = 3;



面试题:

》ASI和AFN的区别

1 底层实现

  1-1 AFN基于OC的NSURLConnection和NSURLSession、

  1-2 ASI基于C语言的CFNetwok


2 服务器返回数据

2-1 ASI没有直接提供对服务器数据处理方式

2-2 AFN提供了


3 监听请求过程

3-1 AFN提供success和failure两个block

3-2 ASI提高三种监听方案,能够监听开始、响应信息、响应数据、结束、失败等完整过程

3-2-1 不遵守协议的代理

3-2-2 遵守协议的代理

3-2-3 block


4 文件上传下载使用难度不同

4-1 AFN各种不易实现

4-1-1 


4-2 ASI

4-2-1 容易监听上传下载进度

4-2-2 容易实现断点续传

4-2-3 


5 ASI提供更多使用功能

5-1 显示状态栏图标

5-2 设置后台运行

5-3 设置请求依赖,NSOperation

5-4 统一管理所有请求,ASINetWorkQueue

5-5 



》ASI底层怎么实现




UIWebView


》基本使用

1 获取NSURL

2 获取NSURLRequest请求

3 调用webView的loadRequest设置请求内容

4 设置网页伸缩





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值