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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:

前言:第三方网络请求框架中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 网络监听(不难)

  

 

相关文章
|
27天前
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
102 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
1月前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
110 1
|
5天前
|
API
鸿蒙开发:切换至基于rcp的网络请求
本文的内容主要是把之前基于http封装的库,修改为当前的Remote Communication Kit(远场通信服务),无非就是通信的方式变了,其他都大差不差。
鸿蒙开发:切换至基于rcp的网络请求
|
8天前
|
安全 数据处理 Swift
深入探索iOS开发中的Swift语言特性
本文旨在为开发者提供对Swift语言在iOS平台开发的深度理解,涵盖从基础语法到高级特性的全面分析。通过具体案例和代码示例,揭示Swift如何简化编程过程、提高代码效率,并促进iOS应用的创新。文章不仅适合初学者作为入门指南,也适合有经验的开发者深化对Swift语言的认识。
25 9
|
7天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异和挑战
【10月更文挑战第37天】在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统扮演着主角。它们各自拥有独特的特性、优势以及面临的开发挑战。本文将深入探讨这两个平台在开发过程中的主要差异,从编程语言到用户界面设计,再到市场分布的不同影响,旨在为开发者提供一个全面的视角,帮助他们更好地理解并应对在不同平台上进行应用开发时可能遇到的难题和机遇。
|
5天前
|
iOS开发 开发者
探索iOS开发中的SwiftUI框架
【10月更文挑战第39天】在苹果的生态系统中,SwiftUI框架以其声明式语法和易用性成为开发者的新宠。本文将深入SwiftUI的核心概念,通过实际案例展示如何利用这一框架快速构建用户界面,并探讨其对iOS应用开发流程的影响。
|
8天前
|
JSON 前端开发 API
探索iOS开发之旅:打造你的第一个天气应用
【10月更文挑战第36天】在这篇文章中,我们将踏上一段激动人心的旅程,一起构建属于我们自己的iOS天气应用。通过这个实战项目,你将学习到如何从零开始搭建一个iOS应用,掌握基本的用户界面设计、网络请求处理以及数据解析等核心技能。无论你是编程新手还是希望扩展你的iOS开发技能,这个项目都将为你提供宝贵的实践经验。准备好了吗?让我们开始吧!
|
13天前
|
设计模式 前端开发 Swift
探索iOS开发:从初级到高级的旅程
【10月更文挑战第31天】在这篇文章中,我们将一起踏上iOS开发的旅程。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和技巧。我们将从基础开始,逐步深入到更高级的技术和概念。让我们一起探索iOS开发的世界吧!
|
16天前
|
设计模式 前端开发 Swift
探索iOS开发:从初级到高级的旅程
【10月更文挑战第28天】在这篇技术性文章中,我们将一起踏上一段探索iOS开发的旅程。无论你是刚入门的新手,还是希望提升技能的开发者,这篇文章都将为你提供宝贵的指导和灵感。我们将从基础概念开始,逐步深入到高级主题,如设计模式、性能优化等。通过阅读这篇文章,你将获得一个清晰的学习路径,帮助你在iOS开发领域不断成长。
47 2
|
1月前
|
XML 开发工具 Android开发
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
ExoPlayer最初是为了解决Android早期MediaPlayer控件对网络视频兼容性差的问题而推出的。现在,Android官方已将其升级并纳入Jetpack的Media3库,使其成为音视频操作的统一引擎。新版ExoPlayer支持多种协议,解决了设备和系统碎片化问题,可在整个Android生态中一致运行。通过修改`build.gradle`文件、布局文件及Activity代码,并添加必要的权限,即可集成并使用ExoPlayer进行网络视频播放。具体步骤包括引入依赖库、配置播放界面、编写播放逻辑以及添加互联网访问权限。
131 1
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频