iOS网络请求工具oc版,swift版基于AFNetworking的简单封装

本文探讨了在iOS开发中为何要对AFNetworking进行封装,主要原因是提高效率和代码可维护性。作者分享了解决大量接口更新问题的方法,通过创建OC和Swift版的AFNetworking单例请求对象进行封装,详细介绍了封装过程和使用方法,旨在简化网络请求操作。
摘要由CSDN通过智能技术生成

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;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
缓存策略 typedef NS_ENUM(NSUInteger, YBCacheType){ YBCacheTypeReturnCacheDataThenLoad = 0,///< 有缓存就先返回缓存,同步请求数据 YBCacheTypeReloadIgnoringLocalCacheData, ///< 忽略缓存,重新请求 YBCacheTypeReturnCacheDataElseLoad,///< 有缓存就用缓存,没有缓存就重新请求(用于数据不变时) YBCacheTypeReturnCacheDataDontLoad,///< 有缓存就用缓存,没有缓存就不发请求,当做请求出错处理(用于离线模式) YBCacheTypeReturnCacheDataExpireThenLoad///< 有缓存就用缓存,如果过期了就重新请求 没过期就不请求 }; //get请求 - (void)test_get { NSString *url = @"http://www.baidu.com"; NSDictionary *params = @{@"i":@"1"}; [YBHttpTool get:url params:params success:^(NSDictionary *obj) { //成功 } failure:^(NSError *error) { //失败 }]; } //get带缓存的请求 - (void)test_get_cache { NSString *url = @"http://www.baidu.com"; NSDictionary *params = @{@"i":@"1"}; [YBHttpTool get:url params:params cacheType:YBCacheTypeReturnCacheDataThenLoad success:^(NSDictionary *obj) { //成功 } failure:^(NSError *error) { //失败 }]; } //post请求带缓存 - (void)test_post_cache { NSString *url = @"http://www.baidu.com"; NSDictionary *params = @{@"i":@"1"}; [YBHttpTool post:url params:params cacheType:YBCacheTypeReturnCacheDataThenLoad success:^(NSDictionary *obj) { //成功 } failure:^(NSError *error) { //失败 }]; } //上传单张图片 - (void)test_upload_image { UIImage *image = [UIImage imageNamed:@"1"]; NSData *data = UIImageJPEGRepresentation(image, 0.5); [YBHttpTool uploadImageWithImage:data success:^(NSDictionary *obj) { //上传成功 } failure:^(NSError *error) { //上传失败 }]; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值