前言:第三方网络请求框架中AFNetwork 3.x收欢迎程度相当高的:

由于iOS 7 和 Mac OS X 10.9 Mavericks 中一个显著的变化就是对 Foundation URL 加载系统的彻底重构。而且现在AFN 3.x版本 完全摒弃了NSURLConnection,而使用了NSURLSession。

关于NSURLConnection和NSURLSession的用法,读者可以阅读本人写的很多前几篇博文。

下载方式:1、直接到github官网上搜索"AFN",看到如图上图这样的受欢迎程度高的自然就是。2、使用cocoapods集成到你的项目中去,关于cocoapods的安装和使用方法,请读者阅读本人的两篇博文:《CocoaPods的安装(图文并茂)OS X 10.11 系统》和《CocoaPods的使用(图文并茂)OS X 10.11 系统

 内容大纲:

  • 1、AFN 3.X的基本使用
  • 2、AFN 3.X的文件下载
  • 3、AFN 3.X的文件上传
  • 4、AFN 3.X的使用技巧
  • 5、AFN 3.X 序列化相关
  • 6、AFN 3.X 网络监听(不难)

正文:

1、AFN 3.X的基本使用

  1-1、步骤:

    1-1-1、创建会话管理者
          是AFHTTPSessionManager作为会话管理者,用manager创建
          不是AFURLSessionManager,而且AFURLSessionManager无manager方法
        1-1-2、开始请求,URL都不需要自己创建了。
          第一个参数:请求路径(NSString
            以前: http://120.25.226.186:32812/video?type=JSON
                  http://120.25.226.186:32812/login?username=520it&pwd=520it&type=JSON
                  协议头+主机地址+接口名称+?+参数&参数
            现在:http://120.25.226.186:32812/video
                  http://120.25.226.186:32812/login
            协议头+主机地址+接口名称
          第二个参数:要传递的参数(字典)
          第三个参数: progress:进度 nil
          第四个参数:  success:成功,请求成功的回调
                          task:请求任务
                responseObject:响应体信息,而且内部已经进行了序列化处理
          第五个参数:failure 请求失败的回调
                      task:请求任务
                     error:如果失败,那么error有值

  1-2、源码展示

    

2、AFN 3.X的文件下载

  2-1、步骤:

         第一个参数:请求对象
         第二个参数:progress 进度信息的回调
                downloadProgress
                completedUnitCount:已经下载的数据大小
                  totalUnitCount":数据的总大小
         第三个参数:destination 有返回值
            传递一个目标路径(NSURL),AFN内部会自动执行剪切处理
              targetPath:临时路径
              response: 响应头信息
         第四个参数:completionHandler 下载完成之后调用

  2-2、源码展示

      

3、AFN 3.X的文件上传

  

  

4、AFN 3.X的使用技巧

      在实际开发中,是不会在控制器中直接调用框架的网络请求,比如:如果在网络请求的某个控制器中直接调用了这个AFN框架,会出现后期不好维护的情况,比如一般企业开发的app项目会有十来个二十来  个ViewController,大部分控制器都会需要活数据,也就是需要通过请求网络来获取数据,那么在多个控制器都导入和使用了AFN框架,而实际开发需求可能会让你换掉网络请求框架,要将这个AFN框架换成  ASI框架,这样可想而知,作为码农都要哭了。

  那么可行性方案,也是企业开发中常常会用到的方法:
      在需要网络请求的控制器和网络请求框架之间建立一个工具类,这个工具类可以是类别,也可以是普通类,然后将网络请求的方法简易封装起来,最好能应对不同情况和不同的数据的请求,并且能实现,当  我将AFN框架替换成ASI框架的时候,控制器里调用的这个工具类的方法完全不需要改变,要改变的只是工具类中将AFN替换成ASI框架。总之,创建一个网络请求工具类,能够让所有的控制器不依赖底层框   架,只依赖这个工具类。

  

5、AFN 3.X 序列化相关

  5-1、JSON解析,内部会自动对JSON数据进行反序列化处理,通过响应头信息返回字典对象(可以打印出其类型和字典元素值查看)

       不需要手动设置解析方式。

  

  5-2、XML解析需要<NSXMLParserDelegate>协议辅助解析XML,当然也可以使用我的封装好的能实现XML直接转模型字典的工具类"HYXMLParser"。

      需要告诉AFN以XML的方式解析数据。

      GET方法中要用有NSXMLParser参数的解析方法。

  

  5-3、直接返回服务器的HTML数据格式,记得将返回的数据要设置Encoding为NSUTF8StringEncoding,然后直接输出。

      需要手动设置告诉AFN解析方式为不解析,即AFHTTPResponseSerializer serializer。

  

  5-4、对于返回的是NSData格式的数据,比如网络上的返回的图片、视频等资源二进制数据。

      需要手动设置告诉AFN解析方式为不解析,即AFHTTPResponseSerializer serializer。

  

6、AFN 3.X 网络监听(不难)

  

转载注明出处:http://www.cnblogs.com/goodboy-heyang/p/5215991.html,尊重劳动成果。

iOS开发之网络编程--1、AFNetwork 3.x 的所有开发中常用基础介绍的更多相关文章

  1. iOS开发之网络编程--5、NSURLSessionUploadTask+NSURLSessionDataDelegate代理上传

    前言:关于NSURLSession的主要内容快到尾声了,这里就讲讲文件上传.关于文件上传当然就要使用NSURLSessionUploadTask,这里直接讲解常用的会和代理NSURLSessionDa ...

  2. iOS开发之网络编程--4、NSURLSessionDataTask实现文件下载(离线断点续传下载) <进度值显示优化>

    前言:根据前篇<iOS开发之网络编程--2.NSURLSessionDownloadTask文件下载>或者<iOS开发之网络编程--3.NSURLSessionDataTask实现文 ...

  3. iOS开发之网络编程--3、NSURLSessionDataTask实现文件下载(离线断点续传下载)

    前言:使用NSURLSessionDownloadTask满足不这个需要离线断点续传的下载需求,所以这里就需要使用NSURLSessionDataTask的代理方法来处理下载大文件,并且实现离线断点续 ...

  4. iOS开发之网络编程--2、NSURLSessionDownloadTask文件下载

    本文内容大纲: 1.回顾NSURLSessionTask 2.NSURLSessionDownloadTask大文件之block下载 3.NSURLSessionDownloadTask大文件之代理方 ...

  5. iOS开发之网络编程--使用NSURLConnection实现文件上传

    前言:使用NSURLConnection实现文件上传有点繁琐.    本文并没有介绍使用第三方框架上传文件. 正文: 这里先提供用于编码测试的接口:http://120.25.226.186:3281 ...

  6. iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载+使用输出流代替文件句柄

    前言:本篇讲解,在前篇iOS开发之网络编程--使用NSURLConnection实现大文件断点续传下载的基础上,使用输出流代替文件句柄实现大文件断点续传.    在实际开发中,输入输出流用的比较少,但 ...

  7. iOS开发之网络编程--使用NSURLConnection实现大文件下载

    主要思路(实现下载数据分段写入缓存中) 1.使用NSURLConnectionDataDelegate以及代理方法.2.在成功获取响应的代理方法中,获得沙盒全路径,并在该路径下创建空文件和文件句柄.3 ...

  8. iOS开发之网络编程--小文件下载

    文件下载方式: 如果下载的文件比较小,下载方式: 直接用NSData的 +(id)dataWithContentsOfURL:(NSURL*)url; 利用NSURLConnection发送一个HTT ...

  9. IOS研究之网络编程(二)-Cocoa Streams使用具体解释

     本文以及相关的系列文章是我总结的iOS网络开发方面的知识点,本文是第二篇,主要分析了Cocoa Streams中的几个重要类 Cocoa Streams实际上是Objective-C对CFNet ...

随机推荐

  1. 详解MemCached原理

    memcached是一个高性能的分布式内存缓存服务器,memcached在Linux上可以通过yum命令安装,这样方便很多,在生产环境下建议用Linux系统,memcached使用libevent这个 ...

  2. spring源码分析之spring-web remoting模块概况及基本概念

    spring-web总体分为三部分:caucho.httpinvoker.jaxws,其总体构造图如下: uml结构: 先看看网上搜索到的上述实现的原理吧:Spring RMI,Hessian/Bur ...

  3. Dewey – 标记和搜索 Chrome 浏览器书签

    Dewey 是一个 Chrome 应用程序,用于标记,搜索和排序你的 Chrome 浏览器书签.借助 Dewey,您可以添加自定义标签,生成你的书签截图,灵活快捷的方式进行搜索和排序. 您可能感兴趣的 ...

  4. 《HelloGitHub月刊》第02期

    <HelloGithub>第02期 兴趣是最好的老师,而<HelloGitHub> 就是帮你找到兴趣! 因为我比较熟悉python语言,所以月刊中python语言的项目居多,个 ...

  5. CSS3魔法堂:背景渐变(Gradient)

    一.前言 很久之前就了解过CSS3的线性渐变(Linear-Gradient),这段时间决定进一步认知这一特性,以下笔记以便日后查阅. 二.CSS3的各种背景渐变   1. 线性渐变 示例——七彩虹 ...

  6. QCustomplot使用分享(四) QCPAbstractItem

    一.是什么 说起图,大家一下就可能想到折线图.柱状图和饼图等,但是除了这些显眼的东西以外其实还有很多东西辅助的存在着,有了这些辅助的东西图才会看起来有意义,或者说更加的真实.有说服力.这些东西都包括那 ...

  7. Linux文件打包压缩、解压缩、备份命令使用方法(转载)

    对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕.别个不说,单单就压缩文件为例,我们知道在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rar.可 ...

  8. 浅谈Struts2拦截器的原理与实现

    拦截器与过滤器           拦截器是对调用的Action起作用,它提供了一种机制可以使开发者定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行.同时也是提供了 ...

  9. easyui-treegrid节点选择

    easyui-treegrid本身不能实现选中父节点子节点全选,必须通过另外的方法来实现,这里说下如何通过修改节点样式添加checkbox来实现级联选择效果 首先需要格式化节点的样式 formatte ...

  10. 用stimulsoft Reports报表工具制作简单报表的过程

    这是在数据库sql server中People表的数据