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裡面直接呼叫以上這些介面請求網路,建議在這個網路封裝之上根據具體業務再封裝一層。這樣封裝成離散型網路層架構比較好。