iOS之AFNetworking实现原理和使用方法

AFHTTPClient处理GET和POST请求

在要经常调用某个请求时,可以封装,节省资源。

http网络库是集XML解析,Json解析,网络图片下载,plist解析,数据流请求操作,上传,下载,缓存等网络众多功能于一身的强大的类库。最新版本支持session,xctool单元测试网络获取数据一直是手机软件的重中之重,如果处理的不好,会造成很差的用户体验。随着ASIHTTPRequest的停止更新,更换网络库是必然的事情,AFNetworking就是很好的替代品。而且都是轻量级,不要担心加入太多库会多软件性能有影响。


一、为什么用第三方网络库?

什么都用苹果原生的好,XML解析用苹果自带的委托,下载图片自己写,你会发现自己管理起来很复杂,很容易出错,而且性能不好。第三方网络库可以优化这些问题。


二、为什么要用AFNetworking?


AFNetworking 目前使用比较多得一个下载库,目前一直在维护更新,使用的是非常简单,不需要添加任何关联的库。
 1、带block形式, 内部是任务队列进行下载 ,就是对operation的一个封装下载。
 2、还对uikit 内部的类进行类别形式添加方法(异步下载图片)。
 3、还可以检测网络状态。
 ASI 以前使用比较多得一个下载开源库 现在已经不维护了,ASI 使用的时候要导入很多库 比较麻烦第一点。

三、AFNetWorking处理GET请求

要使用常规的AFN网络访问
 
 1. AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
 
 所有的网络请求,均有manager发起
 
 2. 需要注意的是,默认提交请求的数据是二进制的,返回格式是JSON
 
 1> 如果提交数据是JSON的,需要将请求格式设置为AFJSONRequestSerializer
 2> 如果返回格式不是JSON的,
 
 3. 请求格式
 
 AFHTTPRequestSerializer            二进制格式
 AFJSONRequestSerializer            JSON
 AFPropertyListRequestSerializer    PList(是一种特殊的XML,解析起来相对容易)
 
 4. 返回格式 (响应格式)
 
 AFHTTPResponseSerializer           二进制格式
 AFJSONResponseSerializer           JSON
 AFXMLParserResponseSerializer      XML,只能返回XMLParser,还需要自己通过代理方法解析
 AFXMLDocumentResponseSerializer (Mac OS X)
 AFPropertyListResponseSerializer   PList
 AFImageResponseSerializer          Image
 AFCompoundResponseSerializer       组合
 
 取消任务
 [manager.operationQueue cancelAllOperations];

代码demo:

1、GET请求

第一种情况:服务端的响应体的形式是text/json格式


第二种情况:服务端响应体的content-type: 是text/xml格式


第三种情况: 服务端返回的响应体的content-type: 是text/html格式


2、get请求中的https 安全认证


3、AF添加get请求头



四、AFNetWorking处理POST请求

代码demo:

1、post&AFNetworking 参数


2、post&AFNetworking 上传文件


3、post&AFNetworking 上传头像


4、AFNetwork检测网络连接


5、检测网络连接另外一个第三方库Reachability


6、发送json数据,post请求体,发送的json格式



  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值