iOS網路層封裝(基於AFNetworking3 0)

weixin_33809981發表於2018-07-31

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

  • 參考 iOS應用架構談 網路層設計方案


最新Demo地址https://github.com/xinge1/LXNetworking

相關文章