結合AFNetworking 和 MJExtension的二次網絡請求的封裝:YKNetWorkApi

jopen 9年前發布 | 55K 次閱讀 iOS開發 移動開發 YKNetWorkApi

結合AFNetworking 和 MJExtension的二次網絡請求的封裝

說明

YKNetWorkApi 是對AFNetwork輕量級二次封裝,結合MJExtension讓網絡請求數據更加簡單直接,精簡AFN網絡請求后的block回調,同時針對網絡請求返回的json進行模型轉化,從而快速的面向模型進行業務開發。YKNetWorkApi包裝了get post put delete四種常用的網絡請求,還有post圖片上傳;同時單獨利用NSURLConnection實現了put上傳圖片你的方法(公司特殊需求,內部有httpBody參數拼接的格式);

沒有的功能

YKNetWorkApi是輕量級的二次封裝,如果你的應用中要設置請求之間的依賴,請求暫停等之類功能,那么不適合使用本套類庫,當然也可以在YKNetWorkApi的基礎上進行填充。

類的關系圖

demo.png

YKNetWorkApi的應用場景部分代碼

業務類接口的實現

// .h文件
+(void)getDemoDataWithResponseHandler:(responseHandler)Handler;

// .m實現文件  
+(void)getDemoDataWithResponseHandler:(responseHandler)Handler
{
    [self getWithUrl:demoDataUrl param:nil resultClass:[DemoAllData class] responseBlock:Handler];
}

控制器中的使用
-(void)loadNetData
{
    [AppDemoServices getDemoDataWithResponseHandler:^(DemoAllData *dataObj, NSError *error) {
        if (dataObj) {
            [self.datas removeAllObjects];
            [self.datas addObjectsFromArray:dataObj.data];
            [self.tableView reloadData];
        } else {
            NSLog(@"網絡請求發生錯誤");
        }
    }];
}  

相關文件的說明

YKHttpTool類
對AFN進行直接包裝;內部可以統一設置httpHeader,超時設置;
同時提供了 完整url、json、httpHeader的debug模式下的打印方法,用來調試是再爽不過了;

YKServiceBaseTool類
該類在YKHttpTool基礎上進行了字典和模型的轉化,同時將請求成功和失敗的兩個block合并在一個block中,除了方便,在使用時能減少代碼行數;
typedef void (^responseHandler)(id dataObj, NSError *error);
該類額外提供了put上傳圖片;利用NSURLConnection實現,封裝了httpBody繁瑣的拼接格式;


** 對+(NSString *)vilidClassName方法的說明 **

該方法是為了獲得YKServiceBaseTool直接子類的類名,通過類名,在庫中自帶的一個setting.plist文件中獲取host地址;

*對+(NSString *)compeletHttpUrlWithSubUrl:(NSString *)subUrl方法的說明 *

方法是進行完整的url拼接,追加https前綴 (如果是http 自行修改一下)
拼接host從而得到完整的url,如果子類傳入的url是完整url,這個方法將無效;

YKNetWorkUrlDocument

這個文件是 字符串常量文件,作者喜歡把出去url中的路徑全部以字符串常量的形式記錄到這里,除了比較整齊以外,方便進行接口統計和和統一修改,(如果你不喜歡,可以不用,直接刪除這個文件)

其他說明

YKNetWorkApi并不強大,是作者開發經驗剛滿一年的一些成果總結,YKNetWorkApi的主要目的是能夠精簡的進行網絡請求,讓代碼看起來整齊一點;如果有意見和建議,歡迎交流,作者是個熱愛學習和分享的人;
**微博:鳴2010


項目主頁:
http://www.baiduhome.net/lib/view/home/1438848387661

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!