LXNetworking
###网络层封装,基于AFNetworking 3.0
Demo地址https://github.com/xinge1/LXNetworking 大家如果有什么建议或意见可以直接联系我。
####实现的功能
- get请求
- post请求
- 图片上传
- 文件下载
- 网络状况检测
- HUD显示(使用的MBProgressHUD,不喜欢的可以自己去掉)
下载方法的效果图
使用方法
/**
* 开启网络监测
*/
+ (void)startMonitoring;
复制代码
/**
* get请求方法,block回调
*
* @param url 请求连接,根路径
* @param params 参数
* @param success 请求成功返回数据
* @param fail 请求失败
* @param showHUD 是否显示HUD
*/
+(LXURLSessionTask *)getWithUrl:(NSString *)url
params:(NSDictionary *)params
success:(LXResponseSuccess)success
fail:(LXResponseFail)fail
showHUD:(BOOL)showHUD;
复制代码
/**
* post请求方法,block回调
*
* @param url 请求连接,根路径
* @param params 参数
* @param success 请求成功返回数据
* @param fail 请求失败
* @param showHUD 是否显示HUD
*/
+(LXURLSessionTask *)postWithUrl:(NSString *)url
params:(NSDictionary *)params
success:(LXResponseSuccess)success
fail:(LXResponseFail)fail
showHUD:(BOOL)showHUD;
复制代码
/**
* 上传图片方法
*
* @param image 上传的图片
* @param url 请求连接,根路径
* @param filename 图片的名称(如果不传则以当时间命名)
* @param name 上传图片时填写的图片对应的参数
* @param params 参数
* @param progress 上传进度
* @param success 请求成功返回数据
* @param fail 请求失败
* @param showHUD 是否显示HUD
*/
+ (LXURLSessionTask *)uploadWithImage:(UIImage *)image
url:(NSString *)url
filename:(NSString *)filename
name:(NSString *)name
params:(NSDictionary *)params
progress:(LXUploadProgress)progress
success:(LXResponseSuccess)success
fail:(LXResponseFail)fail
showHUD:(BOOL)showHUD;
复制代码
/**
* 下载文件方法
*
* @param url 下载地址
* @param saveToPath 文件保存的路径,如果不传则保存到Documents目录下,以文件本来的名字命名
* @param progressBlock 下载进度回调
* @param success 下载完成
* @param fail 失败
* @param showHUD 是否显示HUD
* @return 返回请求任务对象,便于操作
*/
+ (LXURLSessionTask *)downloadWithUrl:(NSString *)url
saveToPath:(NSString *)saveToPath
progress:(LXDownloadProgress )progressBlock
success:(LXResponseSuccess )success
failure:(LXResponseFail )fail
showHUD:(BOOL)showHUD;
复制代码
遇到的坑
- 在AFNetworking的下载方法里面需要return一个url路径,如果把路径直接用
[NSURL URLWithString:saveToPath];
返回则在相应的路径下找不到下载的文件,所以最好使用[NSURL fileURLWithPath:saveToPath];
方法返回。URLWithString
只是把路径转成NSURL
类型。fileURLWithPath
是将字符串路径转成文件路径。 (不知道这么解释对不对,有更好的解释吗)
######建议
-
不建议在viewControl里面直接调用以上这些接口请求网络,建议在这个网络封装之上根据具体业务再封装一层。这样封装成离散型网络层架构比较好。