zoukankan      html  css  js  c++  java
  • iOS开发之网络编程--1、AFNetwork 3.x 的所有开发中常用基础介绍

    前言:第三方网络请求框架中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,尊重劳动成果。

  • 相关阅读:
    ubuntu下Thrift快速入门
    java Future用法和意义一句话击破 [转]
    RPC、基于netty的长连接和websocket
    基于netty的长连接
    IO
    HTML5 中websocket长连接的具体实现方法
    单链表中是否出现环状,使用快慢指针算法。
    SpringMVC 事务配置完全详解
    hibernate annotation 一对多,多对一,实例
    tomcat 内存溢出
  • 原文地址:https://www.cnblogs.com/goodboy-heyang/p/5215991.html
Copyright © 2011-2022 走看看