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)行的封裝,簡化了很多步驟,但是在現(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 禁止按鈕在一定時(shí)間內(nèi)連續(xù)點(diǎn)擊
本文主要介紹了iOS中禁止按鈕在一定時(shí)間內(nèi)連續(xù)點(diǎn)擊的方法,具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02
iOS 將系統(tǒng)自帶的button改裝成上圖片下文字的樣子
這篇文章主要介紹了 iOS 將系統(tǒng)自帶的button改裝成上圖片下文字的樣子,代碼是通過繼承UIButton,然后再重寫layoutSubviews方法,對(duì)自帶的圖片和titleLabel進(jìn)行重新的layout。下面通過本文給大家分享下實(shí)現(xiàn)代碼2016-12-12
iOS中的音頻服務(wù)和音頻AVAudioPlayer音頻播放器使用指南
這里我們要介紹的是AVAudio ToolBox框架中的AudioServicesPlaySystemSound函數(shù)創(chuàng)建的服務(wù),特別適合用來制作鈴聲,下面就簡單整理一下iOS中的音頻服務(wù)和音頻AVAudioPlayer音頻播放器使用指南:2016-06-06
IOS 應(yīng)用之間的跳轉(zhuǎn)和數(shù)據(jù)傳遞詳解
這篇文章主要介紹了IOS 應(yīng)用之間的跳轉(zhuǎn)和數(shù)據(jù)傳遞詳解的相關(guān)資料,需要的朋友可以參考下2016-09-09
解析iOS應(yīng)用的UI開發(fā)中懶加載和xib的簡單使用方法
這篇文章主要介紹了解析iOS應(yīng)用的UI開發(fā)中懶加載和xib的簡單使用方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-01-01
iOS App開發(fā)中修改UILabel默認(rèn)字體的方法
UILabel是控制字體顯示的主要方式,這里我們就來看看通過NSAttributedText和NSMutableAttributedText這兩個(gè)類或者用runtime的方式來在iOS App開發(fā)中修改UILabel默認(rèn)字體的方法2016-07-07
iOS自定義button抖動(dòng)效果并實(shí)現(xiàn)右上角刪除按鈕
這篇文章主要為大家詳細(xì)介紹了iOS自定義button抖動(dòng)效果并實(shí)現(xiàn)右上角刪除按鈕的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-03-03

