ios網路請求框架,基於AFNetworking封裝,其中快取模組依賴TMCache,JSON解析模組依賴MJExtension,使用更加簡單方便
阿新 • • 發佈:2019-01-08
LazyNetForIOS
由於本人不太會寫文章,有寫得不好得地方請見諒
專案介紹
專案地址
介紹:
- 非常感謝這三個作品得作者,個人也熱衷與開源,以後有覺得好的東西都會熱於與大家分享
- 如果覺得框架寫的還不錯,或者對自己有用的話,請給個star吧,感謝您的支援,謝謝
- 如果框架中有什麼寫的不足的地方,請告訴我,非常感謝
- 如果對與使用方法不懂的地方你也可以聯絡我,樂於為你解答(聯絡方式你看末尾)
功能:
- 2.目前支援GET和POST方式請求(一般開發場景中已足夠用),以及檔案上傳和下載功能
- 3.如果是json方式的請求,你只需要把物件的型別傳過去,返回結果中就能夠得到對應的物件資料,model格式參照
- 4.支援快取,雖然Cocoa網路請求就支援快取功能,但實際很多時候都不能滿足我們的需求,比如先獲取快取資料再獲取網路資料,後續將增加快取期限
- 5.支援block方式和delegate方式的資料回撥,當一個頁面中有多個請求的情況,強烈建議使用delegate方式,然後根據requestId(請求id)取區分是哪一個請求,並且做對應的處理,增加程式碼的複用性
- 6.支援返回資料的加工處理,只需要自定義一個ResponseProcess的子類,並重寫process方法替換預設加工器即可
- 7.支援自定義請求引數,不管是什麼型別,只需要自定義一個RequestParam的子類,並重寫bodys方法即可
- 8.支援載入框,並且自定義載入框
- 9.支援取消對應requestId的請求,以及取消所有請求
- 10.支援取消當前ViewController中的所有請求,請求與ViewController聯動
- 11.日誌輸出請求資訊清晰明瞭
使用方法(以下使用方法只舉了部分使用方法的例子,更多使用方法請自己檢視程式碼,或者聯絡我)
庫引入方式
- 由於種種原因這個庫暫時還沒有提交到Cocoapods,如果需要使用請自行匯出framework或者把LazyNetLibrary程式碼直接考到自己專案中
所需許可權
- 聯網許可權
更新baseUrl
- 如果你的專案中請求地址字首是統一的,請使用以下方法來設定基礎url;如果不統一就不用設定了
[[LazyHttpClient getInstance] updateBaseUrl:url];
或者
HttpClient *httpClient=[[HttpClient alloc]initWithBaseUrl:url];
或者
HttpClient *httpClient=[[HttpClient alloc]init];
[httpClient updateBaseUrl:url];
get方式請求(以下是block回撥方式,delegate方式請自行看例子;例子的回撥是重新包裝過的,為了使用更加簡單)
- 不帶快取功能請求
RequestParam* param=[[RequestParam alloc]initWithUrl:@"/mobile/get"];
[param addBody:self.phoneText.text withKey:@"phone"];
[param addBody:@"158e0590ea4e597836384817ee4108f3" withKey:@"key"];
[[LazyHttpClient getInstance]GET_JSON:self param:param responseClazz:[GetPhoneProvinceResponseModel class] loadingDelegate:nil loadCache:nil success:^(NSString *requestId, id response) {
GetPhoneProvinceResponseModel*model=response;
self.lable.text=[JSONUtils objectToJSONString:model];
} fail:^(NSString *requestId, NSInteger *errorCode, NSString *errorMsaaege) {
self.lable.text=[NSString stringWithFormat:@"獲取手機號歸屬地錯誤,錯誤原因:%@",errorMsaaege];
}];
* 帶快取功能請求(快取型別有四種,程式碼中自行檢視)
RequestParam* param=[[RequestParam alloc]initWithUrl:@"/mobile/get"];
[param addBody:self.phoneText.text withKey:@"phone"];
[param addBody:@"158e0590ea4e597836384817ee4108f3" withKey:@"key"];
param.cacheLoadType=USE_CACHE_UPDATE_CACHE;
[[LazyHttpClient getInstance]GET_JSON:self param:param responseClazz:[GetPhoneProvinceResponseModel class] loadingDelegate:nil
loadCache:^(NSString *requestId, id response) {
GetPhoneProvinceResponseModel*model=response;
self.lable.text=[JSONUtils objectToJSONString:model];
} success:^(NSString *requestId, id response) {
GetPhoneProvinceResponseModel*model=response;
self.lable.text=[JSONUtils objectToJSONString:model];
} fail:^(NSString *requestId, NSInteger *errorCode, NSString *errorMsaaege) {
self.lable.text=[NSString stringWithFormat:@"獲取手機號歸屬地錯誤,錯誤原因:%@",errorMsaaege];
}];
post方式請求(以下是block回撥方式,delegate方式請自行看例子;例子是經過包裝了的)
- 不帶快取功能的
NSString*[email protected]"/qqevaluate/qq";
RequestParam* param=[[RequestParam alloc]initWithUrl:theUrl];
[param addBody:self.phoneText.text withKey:@"qq"];
[param addBody:@"780e8bced58c6203140b858d7aa2644c" withKey:@"key"];
[[LazyHttpClient getInstance]POST_JSON:self param:param responseClazz:[QQXiongJIResponseModel class] loadingDelegate:nil loadCache:nil success:^(NSString *requestId, id response) {
QQXiongJIResponseModel*model=response;
self.lable.text=[JSONUtils objectToJSONString:model];
} fail:^(NSString *requestId, NSInteger *errorCode, NSString *errorMsaaege) {
self.lable.text=[NSString stringWithFormat:@"呼叫QQ測凶吉介面錯誤,錯誤原因:%@",errorMsaaege];
}];
* 帶快取功能的(快取型別有四種,程式碼中自行檢視)
NSString*[email protected]"/qqevaluate/qq";
RequestParam* param=[[RequestParam alloc]initWithUrl:theUrl];
[param addBody:self.phoneText.text withKey:@"qq"];
[param addBody:@"780e8bced58c6203140b858d7aa2644c" withKey:@"key"];
param.cacheLoadType=USE_CACHE_UPDATE_CACHE;
[[LazyHttpClient getInstance]POST_JSON:self param:param responseClazz:[QQXiongJIResponseModel class] loadingDelegate:nil loadCache:^(NSString *requestId, id response) {
QQXiongJIResponseModel*model=response;
self.lable.text=[JSONUtils objectToJSONString:model];
} success:^(NSString *requestId, id response) {
QQXiongJIResponseModel*model=response;
self.lable.text=[JSONUtils objectToJSONString:model];
} fail:^(NSString *requestId, NSInteger *errorCode, NSString *errorMsaaege) {
self.lable.text=[NSString stringWithFormat:@"呼叫QQ測凶吉介面錯誤,錯誤原因:%@",errorMsaaege];
}];
上傳
- 待續...
下載
- 待續...
關於作者Robin
- 屌絲程式設計師
- 如果對你有幫助,請給個star,謝謝支援
- QQ:429257411
- 交流QQ群 236395044