zoukankan      html  css  js  c++  java
  • 基于AFNetworking3.0网络封装

    概述

    对于开发人员来说,学习网络层知识是必备的,任何一款App的开发,都需要到网络请求接口。很多朋友都还在使用原生的NSURLConnection一行一行地写,代码到处是,这样维护起来更困难了。

    对于使用AFNetworking的朋友来说,很多朋友都是直接调用AFNetworkingAPI,这样不太好,无法做到全工程统一配置。

    最好的方式就是对网络层再封装一层,全工程不允许直接使用AFNetworkingAPI,必须调用我们自己封装的一层,如此一来,任何网络配置都可以在这一层里配置好,使用的人无须知道里面在干嘛,只管调用就可以了。

    本篇为基于AFNetworking3.0以上的版本,支持iOS7及其以上版本。若要支持iOS6,请阅读旧版本:基于AFNetworking2.5封装

    Version 3.2.1

    • 完善缓存机制及无网或者网络异常状态下取缓存数据

    Version 3.2.0

    • 增加超时设置
    • 增加网络异常时是否读取本地缓存的策略

    升级为3.0版本

    • 简化API,以降低使用的要求
    • 增加GET/POST数据缓存、获取缓存大小、清空缓存功能
    • 接口增加刷新缓存功能
    • 增加取消所有请求、取消单个请求功能
    • 格式化打印日志
    • 增加对手动取消请求接口是否在失败时还回调的控制

    常用接口类型

    应用开发过程中,所使用类型通常是GETPOST及上传图片。因此,这里只是对这几种类型提供API

    GET接口

    这里提供了两个GET请求的API,需要一般情况下GET请求都是直接写一个完整的URL,但是有时候为了参数可读性更强,改成传一个字典过来更容易阅读。

    HYBResponseSuccess是响应成功的回调,返回的是字典,外部再转换成模型就可以了。
    HYBResponseFail是响应失败的回调,只有一个NSError对象,外部可接收处理。

    POST接口

    对于POST请求类型的接口,只有一个,看注释就可以明白如何使用了。

    图片上传接口

    接口一次只能上传一张图片,通常也是这么处理的。这里是以文件流的形式来上传的哦。其中,mineTypeimage/jpeg

    上传文件接口

    文件下载接口

    取消请求

    在使用中,可以通过这样来调用:

    缓存

    BaseURL

    这里还提供了两个公共接口,一个是用于设置或者更新网络接口的基础URL,一个是获取当前设置使用的网络接口基础URL。

    添加公共请求头参数

    通常每家公司的接口都会设置公共的请求头参数,以代表是公司的接口。默认已经配置了可接收的类型,但是如果需要额外配置,可通过调用此api来添加:

    请求、响应类型

    默认responseType和requestType都是JSON格式。如果不使用JSON,可以全局配置成自己希望的格式即可。若不配置,默认就是JSON。

    URL编码问题

    考虑到网络请求接口中,有时候会有中文参数,这时候就会请求失败,因此我们要对这种类型的URL进行编码,否则请求会失败。这里是开启或者关闭自动将URL编码的接口,默认为NO,表示不开启。

    格式化接口数据打印日志

    开启后会有非常好的打印效果,效果如下:

    image

    通常在AppDelegate中应用启动的代理方法中调用设置为开启就可以了。不过是否设置为开启,当应用以发布证书打包时,都不会打印日志,因为这里做了处理,可放心使用。现在已经公开在外部,项目中都可以使用哦:

    安装使用

    现在已经支持cocoapods,引入以下命令即可:

    或者直接下载源代码,拖入工程使用!

    源代码

    请大家到我的github下载源代码:HYBNetworking

    温馨提示

    最近老有人问:编译一直报错library not found for -lAFNetworking什么问题?

    注意:如果您是使用cocoapods来管理第三方库的,那么直接通过上面安装使用的方式来安装即可,然后pod update一下。如果您不是使用cocoapods来引入的,请手动将AFNetworking对应的版本添加到工程。

  • 相关阅读:
    POJ-1189 钉子和小球(动态规划)
    POJ-1191-棋盘分割(动态规划)
    Java实现 LeetCode 730 统计不同回文子字符串(动态规划)
    Java实现 LeetCode 730 统计不同回文子字符串(动态规划)
    Java实现 LeetCode 729 我的日程安排表 I(二叉树)
    Java实现 LeetCode 729 我的日程安排表 I(二叉树)
    Java实现 LeetCode 729 我的日程安排表 I(二叉树)
    Java实现 LeetCode 728 自除数(暴力)
    Java实现 LeetCode 728 自除数(暴力)
    Java实现 LeetCode 728 自除数(暴力)
  • 原文地址:https://www.cnblogs.com/fengmin/p/5507682.html
Copyright © 2011-2022 走看看