1. 程式人生 > >ios網路請求框架,基於AFNetworking封裝,其中快取模組依賴TMCache,JSON解析模組依賴MJExtension,使用更加簡單方便

ios網路請求框架,基於AFNetworking封裝,其中快取模組依賴TMCache,JSON解析模組依賴MJExtension,使用更加簡單方便

    LazyNetForIOS

由於本人不太會寫文章,有寫得不好得地方請見諒

專案介紹

專案地址

介紹:

  • 非常感謝這三個作品得作者,個人也熱衷與開源,以後有覺得好的東西都會熱於與大家分享
  • 如果覺得框架寫的還不錯,或者對自己有用的話,請給個star吧,感謝您的支援,謝謝
  • 如果框架中有什麼寫的不足的地方,請告訴我,非常感謝
  • 如果對與使用方法不懂的地方你也可以聯絡我,樂於為你解答(聯絡方式你看末尾)

功能:

  • 2.目前支援GET和POST方式請求(一般開發場景中已足夠用),以及檔案上傳和下載功能
  • 3.如果是json方式的請求,你只需要把物件的型別傳過去,返回結果中就能夠得到對應的物件資料,model格式參照
    MJExtension
  • 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