IOS 使用Block二次封裝AFNetworking 3.0詳解
IOS 使用Block二次封裝AFNetworking 3.0詳解
現(xiàn)在我們網(wǎng)絡(luò)請(qǐng)求大都用第三方工具—–AFNetworking;
其中,AFNetworking 3.0 是對(duì) NSURLSession 進(jìn)行的封裝,簡(jiǎn)化了很多步驟,但是在現(xiàn)實(shí)開發(fā)中,我們可以將AFNetworking再次封裝到一個(gè)類中,這樣通過傳去URL和Parameters 就可以進(jìn)行網(wǎng)絡(luò)請(qǐng)求。
具體實(shí)現(xiàn)步驟:
前期準(zhǔn)備:導(dǎo)入AFNetworking第三方框架
1、新建一個(gè)工具類,繼承自NSObject;
2、在.h 中宏定義兩個(gè)block,用來回調(diào)請(qǐng)求結(jié)果;
//宏定義成功block 回調(diào)成功后得到的信息 typedef void (^HttpSuccess)(id data); //宏定義失敗block 回調(diào)失敗信息 typedef void (^HttpFailure)(NSError *error);
3、使用類方法創(chuàng)建兩個(gè)GET 和 POST請(qǐng)求函數(shù);
//get請(qǐng)求 +(void)getWithUrlString:(NSString *)urlString success:(HttpSuccess)success failure:(HttpFailure)failure; //post請(qǐng)求 +(void)postWithUrlString:(NSString *)urlString parameters:(NSDictionary *)parameters success:(HttpSuccess)success failure:(HttpFailure)failure;
4、在.m 中#import “AFNetworking/AFNetworking.h”,并實(shí)現(xiàn).h中定義的兩個(gè)函數(shù);
//GET請(qǐng)求 +(void)getWithUrlString:(NSString *)urlString success:(HttpSuccess)success failure:(HttpFailure)failure{ //創(chuàng)建請(qǐng)求管理者 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; //內(nèi)容類型 manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json",@"text/javascript",@"text/html", nil]; //get請(qǐng)求 [manager GET:urlString parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) { //數(shù)據(jù)請(qǐng)求的進(jìn)度 } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { success(responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { failure(error); }]; } //POST請(qǐng)求 +(void)postWithUrlString:(NSString *)urlString parameters:(NSDictionary *)parameters success:(HttpSuccess)success failure:(HttpFailure)failure{ //創(chuàng)建請(qǐng)求管理者 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; // manager.responseSerializer = [AFHTTPResponseSerializer serializer]; //內(nèi)容類型 manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json",@"text/javascript",@"text/html", nil]; //post請(qǐng)求 [manager POST:urlString parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) { //數(shù)據(jù)請(qǐng)求的進(jìn)度 } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { success(responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { failure(error); }]; }
使用步驟:
1、導(dǎo)入自定義的工具類名;
2、調(diào)用自定義的方法;
[XMAFNRequestTools getWithUrlString:url success:^(id data) { self.array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments | NSJSONReadingMutableLeaves error:nil]; NSLog(@"%@",self.array); } failure:^(NSError *error) { NSLog(@"%@",error); }];
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
ios開發(fā)加載webview顯示進(jìn)度條實(shí)例
本篇文章主要介紹了ios開發(fā)加載webview顯示進(jìn)度條實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05iOS UIWebView實(shí)現(xiàn)禁止用戶復(fù)制剪切功能
這篇文章主要給大家介紹了iOS中的UIWebView如何實(shí)現(xiàn)禁止用戶復(fù)制剪切的功能,文中給出了詳細(xì)的示例代碼,有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。2016-11-11iOS應(yīng)用開發(fā)中實(shí)現(xiàn)頁面跳轉(zhuǎn)的簡(jiǎn)單方法筆記
這篇文章主要介紹了iOS應(yīng)用開發(fā)中實(shí)現(xiàn)頁面跳轉(zhuǎn)的簡(jiǎn)單方法筆記,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-02-02詳解iOS App中調(diào)用AVAudioPlayer播放音頻文件的用法
這篇文章主要介紹了iOS App中調(diào)用AVAudioPlayer播放音頻文件的用法,AVAudioPlayer僅能播放本地文件而不能添加網(wǎng)絡(luò)源,實(shí)例代碼為Objective-C,需要的朋友可以參考下2016-03-03iOS創(chuàng)建對(duì)象的不同姿勢(shì)詳解
這篇文章主要介紹了iOS創(chuàng)建對(duì)象的不同姿勢(shì),文中介紹的很詳細(xì),對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。2017-02-02實(shí)例講解iOS應(yīng)用開發(fā)中UIPickerView滾動(dòng)選擇欄的用法
這篇文章主要介紹了iOS應(yīng)用開發(fā)中UIPickerView滾動(dòng)選擇欄的用法,示例代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-04-04