ios網絡請求框架,基於AFNetworking封裝,其中緩存模塊依賴TMCache,JSON解析模塊依賴MJExtension,使用簡單方便

 

LazyNetForIOS

因爲本人不太會寫文章,有寫得很差得地方請見諒

項目介紹

項目地址

介紹:

  • 這是一個ios網絡請求框架,基於AFNetworking封裝,其中緩存模塊依賴TMCache,JSON解析模塊依賴MJExtension
  • 很是感謝這三個做品得做者,我的也熱衷與開源,之後有以爲好的東西都會熱於與你們分享
  • 若是以爲框架寫的還不錯,或者對本身有用的話,請給個star吧,感謝您的支持,謝謝
  • 若是框架中有什麼寫的不足的地方,請告訴我,很是感謝
  • 若是對與使用方法不懂的地方你也能夠聯繫我,樂於爲你解答(聯繫方式你看末尾)

功能:

  • 1.支持json,NSString,NSData,以及自定義的請求,自定義請求能夠自行擴展,只須要自定義一個AFHTTPRequestSerializerAFHTTPResponseSerializer子類,並重寫對應方法便可
  • 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*theUrl=@"/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*theUrl=@"/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,謝謝支持
  • GitHub: Robin-jiangyufeng
  • QQ:429257411
  • 交流QQ羣 236395044
相關文章
相關標籤/搜索