概述
对于开发人员来说,学习网络层知识是必备的,任何一款App
的开发,都需要到网络请求接口。很多朋友都还在使用原生的NSURLConnection
一行一行地写,代码到处是,这样维护起来更困难了。
对于使用AFNetworking
的朋友来说,很多朋友都是直接调用AFNetworking
的API
,这样不太好,无法做到全工程统一配置。
最好的方式就是对网络层再封装一层,全工程不允许直接使用AFNetworking
的API
,必须调用我们自己封装的一层,如此一来,任何网络配置都可以在这一层里配置好,使用的人无须知道里面在干嘛,只管调用就可以了。
本篇为基于AFNetworking3.0以上的版本,支持iOS7及其以上版本。若要支持iOS6,请阅读旧版本:基于AFNetworking2.5封装,旧版本不再维护!
常用接口类型
应用开发过程中,所使用类型通常是GET
、POST
及上传图片。因此,这里只是对这几种类型提供API
。
GET接口
这里提供了两个GET
请求的API
,需要一般情况下GET
请求都是直接写一个完整的URL
,但是有时候为了参数可读性更强,改成传一个字典过来更容易阅读。
HYBResponseSuccess
是响应成功的回调,返回的是字典,外部再转换成模型就可以了。
HYBResponseFail
是响应失败的回调,只有一个NSError
对象,外部可接收处理。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
/*! * @author 黄仪标, 15-11-15 13:11:50 * * GET请求接口,若不指定baseurl,可传完整的url * * @param url 接口路径,如/path/getArticleList * @param refreshCache 是否刷新缓存。由于请求成功也可能没有数据,对于业务失败,只能通过人为手动判断 * @param params 接口中所需要的拼接参数,如@{"categoryid" : @(12)} * @param success 接口成功请求到数据的回调 * @param fail 接口请求数据失败的回调 * * @return 返回的对象中有可取消请求的API */ + (HYBURLSessionTask *)getWithUrl:(NSString *)url refreshCache:(BOOL)refreshCache success:(HYBResponseSuccess)success fail:(HYBResponseFail)fail; // 多一个params参数 + (HYBURLSessionTask *)getWithUrl:(NSString *)url refreshCache:(BOOL)refreshCache params:(NSDictionary *)params success:(HYBResponseSuccess)success fail:(HYBResponseFail)fail; // 多一个带进度回调 + (HYBURLSessionTask *)getWithUrl:(NSString *)url refreshCache:(BOOL)refreshCache params:(NSDictionary *)params progress:(HYBGetProgress)progress success:(HYBResponseSuccess)success fail:(HYBResponseFail)fail; |
POST接口
对于POST
请求类型的接口,只有一个,看注释就可以明白如何使用了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
/*! * @author 黄仪标, 15-11-15 13:11:50 * * POST请求接口,若不指定baseurl,可传完整的url * * @param url 接口路径,如/path/getArticleList * @param params 接口中所需的参数,如@{"categoryid" : @(12)} * @param success 接口成功请求到数据的回调 * @param fail 接口请求数据失败的回调 * * @return 返回的对象中有可取消请求的API */ + (HYBURLSessionTask *)postWithUrl:(NSString *)url refreshCache:(BOOL)refreshCache params:(NSDictionary *)params success:(HYBResponseSuccess)success fail:(HYBResponseFail)fail; + (HYBURLSessionTask *)postWithUrl:(NSString *)url refreshCache:(BOOL)refreshCache params:(NSDictionary *)params progress:(HYBPostProgress)progress success:(HYBResponseSuccess)success fail:(HYBResponseFail)fail; |
图片上传接口
接口一次只能上传一张图片,通常也是这么处理的。这里是以文件流的形式来上传的哦。其中,mineType
为image/jpeg
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
/** * @author 黄仪标, 16-01-31 00:01:40 * * 图片上传接口,若不指定baseurl,可传完整的url * * @param image 图片对象 * @param url 上传图片的接口路径,如/path/images/ * @param filename 给图片起一个名字,默认为当前日期时间,格式为"yyyyMMddHHmmss",后缀为`jpg` 说,很多朋友都是直接调用 AFNetworking 的API ,这样不太好,无法做到全工程统一配置。
最好的方式就是对网络层再封装一层,全工程不允许直接使用 本篇为基于AFNetworking3.0以上的版本,支持iOS7及其以上版本。若要支持iOS6,请阅读旧版本:基于AFNetworking2.5封装,旧版本不再维护! 常用接口类型应用开发过程中,所使用类型通常是 GET接口这里提供了两个
POST接口对于
图片上传接口接口一次只能上传一张图片,通常也是这么处理的。这里是以文件流的形式来上传的哦。其中,
|