1.为什么要封装
对于AFNetworking
的使用,相信大多数的公司都会用到,毕竟开源框架,安全高效.为了提高效率和代码的可维护性,我们就要二次封装AFN
.
2,以前遇到问题
一个老项目,需要进行IPV6
的迁移(虽然老版本的AFN
也支持IPV6
),但是方法变了,之前没有封装AFN
,项目中用到AFN
请求的地方有很多,接口上千,那么AFN
出现的地方就上千个.更新AFN
后,不支持老方法了,需要用新的方法,则需要替换上千个方法,这是个很大的工作量.这时封装的好处就体现出来了,只需改一处.
3,如何解决的
如标题所示,那就是二次封装AFNetworking
重点在下面了
AFNetworking的封装:OC版
首先如下,别问为什么......
cocoapods pod 'AFNetworking'
注意点
- 共享
AFHTTPSessionManager
对象,而不是每次新建SessionManager
为什么要共享?给你们科普一下:HTTP
协议是基于TCP
协议的,所以在每次的HTTP
请求之前,客户端和服务器端,都先需要经过TCP
连接的三次握手,即每次请求之前,网络的数据都已经在客户端和服务器端之间来回了三次 如下图:

Snip20160607_2.png
所以这样做的目的就是提高请求效率,所以我是这么做的,请看下一步
- ok,坐稳开车了
1.创建单例请求对象
创建一个类继承自AFHTTPSessionManager
,如下:

Snip20160607_1.png
2.封装方法
- 封装了几个常用的方法:get,post,上传,下载这几个方法,
为什么用类方法?因为使用起来简单啊!!!
@interface AFNHelper : AFHTTPSessionManager
//单例
+ (AFNHelper *)sharedManager;
/**
* get请求
*
* @param url 接口url
* @param parameters 参数
* @param success 请求成功的block
* @param failure 请求失败的block
*/
+ (void)get:(NSString *)url parameter:(id )parameters success:(void(^)(id responseObject))success faliure:(void(^)(id error))failure;
/**
* post请求
*
* @param url 接口url
* @param parameters 参数
* @param success 请求成功的block
* @param failure 请求失败的block
*/
+ (void)post:(NSString *)url parameters:(id)parameters success:(void(^)(id responseObject))success faliure:(void(^)(id error))failure;
/**
* post请求 不拼接基地址
*
* @param url 接口url
* @param parameters 参数
* @param success 请求成功的block
* @param failure 请求失败的block
*/
+ (void)postNoBaseUrl:(NSString *)url parameters:(id)parameters success:(void(^)(id responseObject))success faliure:(void(^)(id error))failure;