iOS--簡單封裝 AFNetworking網(wǎng)絡(luò)請求

1. 封裝的原因:

  • 如果我們用原生的AFNetworking 當(dāng)然可以猬膨≈ǎ可是你有沒有想過。
  • 如果你下次更新AFN的時候仪搔。它的網(wǎng)絡(luò)請求方法改了要怎么辦呢?
  • 所以我們只要封裝好AFN的代碼蜻牢,下次我要改網(wǎng)絡(luò)請求的時候就直接在這個類里面寫幾句代碼就可以了烤咧。
  • 如果你沒有封裝。就要改所有的請求抢呆。一百多個地方就要改一百多次煮嫌。那你還不累死。
  • 聰明人要懂的給自己抱虐,減少冗余的代碼昌阿!我希望那個人是你。

2. 封裝代碼的 .h 文件

2.1 首先 你得新建一個工具類 繼承自NSObject
.h文件代碼如下 可以直接復(fù)制使用
//
//  MOLoadHttpsData.h
//  AJ King
//
//  Created by 林杰 on 2016/12/27.
//  Copyright ? 2016年 TenMios. All rights reserved.
//  AFN 網(wǎng)絡(luò)請求框架的工具類

/**
 * 封裝的原因:下次我要改網(wǎng)絡(luò)請求的時候就直接在這個類里面寫一句代碼就可以了。
 *           而你沒有封裝宝泵。好啰。就要改所有的請求。一百多個地方就要改一百多次儿奶。
 */


#import <Foundation/Foundation.h>


typedef void (^SuccessBlock) (id responseObject);

typedef void (^FailedBlock) (id error);

@interface MOLoadHttpsData : NSObject


/** Post 請求 */
+(void)PostHttpDataWithUrlStr:(NSString *)url Dic:(NSDictionary *)dic SuccessBlock:(SuccessBlock)successBlock FailureBlock:(FailedBlock)failureBlock;

/** Get 請求 */
+(void)GetHttpDataWithUrlStr:(NSString *)url Dic:(NSDictionary *)dic SuccessBlock:(SuccessBlock)successBlock FailureBlock:(FailedBlock)failureBlock;



@end




3. 封裝代碼的 .m 文件

//
//  MOLoadHttpsData.m
//  AJ King
//
//  Created by 林杰 on 2016/12/27.
//  Copyright ? 2016年 TenMios. All rights reserved.
//

#import "MOLoadHttpsData.h"

@implementation MOLoadHttpsData

/** Post 請求 */
+(void)PostHttpDataWithUrlStr:(NSString *)url Dic:(NSDictionary *)dic SuccessBlock:(SuccessBlock)successBlock FailureBlock:(FailedBlock)failureBlock
{
    
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.responseSerializer.acceptableContentTypes =[NSSet setWithObjects:@"text/html",@"text/plain",nil];
    
    [manager POST:url parameters:dic progress:^(NSProgress * _Nonnull uploadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        
        /** 這里是處理事件的回調(diào) */
        if (successBlock) {
            successBlock(responseObject);
        }
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
        
        /** 這里是處理事件的回調(diào) */
        if (failureBlock) {
            failureBlock(error);
        }
    }
     ];
    
    
}


/** Get 請求 */
+(void)GetHttpDataWithUrlStr:(NSString *)url Dic:(NSDictionary *)dic SuccessBlock:(SuccessBlock)successBlock FailureBlock:(FailedBlock)failureBlock{
    
    
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.responseSerializer.acceptableContentTypes =[NSSet setWithObjects:@"text/html",@"text/plain",nil];
    
    [manager GET:url parameters:dic progress:^(NSProgress * _Nonnull uploadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        
        /** 這里是處理事件的回調(diào) */
        if (successBlock) {
            successBlock(responseObject);
        }
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
        
        /** 這里是處理事件的回調(diào) */
        if (failureBlock) {
            failureBlock(error);
        }
    }
     
     ];
    
}

@end




4. 如何使用呢框往?

把封裝好的 工具類 放在PCH文件中。 這樣以后用到的時候也方便
    [MOLoadHttpsData GetHttpDataWithUrlStr:(這里填寫你要請求的接口地址) Dic:(這里填寫你要提交的參數(shù)) SuccessBlock:^(id responseObject) {
        
      /**
       **  在這里 可以獲取到成功返回的請求數(shù)據(jù)
       **/

   } FailureBlock:^(id error) {

      /**
       **  在這里 可以獲取到失敗返回的請求數(shù)據(jù)
       **/
    }];


工程實例 : (僅供參考)

    //  中間
    [SVProgressHUD showWithStatus:@"loading..."];
    [MOLoadHttpsData GetHttpDataWithUrlStr:HomeMidURL Dic:nil SuccessBlock:^(id responseObject) {
        
        NSDictionary *data = responseObject[@"data"];
        self.mids  = [MIOMidModel
                      mj_objectArrayWithKeyValuesArray:data[@"top"]];
        [self.collectionView reloadData];//加載完成  刷新數(shù)據(jù)
        [SVProgressHUD dismiss];
        
    } FailureBlock:^(id error) {
        // 友情提示
        [SVProgressHUD showErrorWithStatus:@"sorry ! please try again later"];
        
    }];


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末闯捎,一起剝皮案震驚了整個濱河市椰弊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瓤鼻,老刑警劉巖秉版,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異茬祷,居然都是意外死亡清焕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門祭犯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秸妥,“玉大人,你說我怎么就攤上這事沃粗≈嗑澹” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵最盅,是天一觀的道長突雪。 經(jīng)常有香客問我,道長涡贱,這世上最難降的妖魔是什么咏删? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮问词,結(jié)果婚禮上饵婆,老公的妹妹穿的比我還像新娘。我一直安慰自己戏售,他們只是感情好侨核,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著灌灾,像睡著了一般搓译。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锋喜,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天些己,我揣著相機與錄音豌鸡,去河邊找鬼。 笑死段标,一個胖子當(dāng)著我的面吹牛涯冠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逼庞,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼蛇更,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赛糟?” 一聲冷哼從身側(cè)響起派任,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎璧南,沒想到半個月后掌逛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡司倚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年豆混,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片动知。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡皿伺,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拍柒,到底是詐尸還是另有隱情,我是刑警寧澤屈暗,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布拆讯,位于F島的核電站,受9級特大地震影響养叛,放射性物質(zhì)發(fā)生泄漏种呐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一弃甥、第九天 我趴在偏房一處隱蔽的房頂上張望爽室。 院中可真熱鬧,春花似錦淆攻、人聲如沸阔墩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啸箫。三九已至,卻和暖如春伞芹,著一層夾襖步出監(jiān)牢的瞬間忘苛,已是汗流浹背蝉娜。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扎唾,地道東北人召川。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像胸遇,于是被迫代替她去往敵國和親荧呐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容