網(wǎng)上針對(duì)af的封裝也有好多了,其實(shí)封裝主要是為了我們能夠更好的復(fù)用,減少不必要的代碼量!更多的好處就不多說(shuō)了,話(huà)不多說(shuō)直接上代碼。
1、新建一個(gè)LsxNetManager的工具類(lèi),繼承自NSObject;?
2.使用類(lèi)方法創(chuàng)建兩個(gè)GET 和 POST請(qǐng)求函數(shù);
/** 對(duì)AFHTTPSessionManager的GET請(qǐng)求方法進(jìn)行了封裝 */
+ (id)GET:(NSString *)path parameters:(NSDictionary *)params complationHandle:(void(^)(id responseObject, NSError *error))completed;
/** 對(duì)AFHTTPSessionManager的POST請(qǐng)求方法進(jìn)行了封裝 */
+ (id)POST:(NSString *)path parameters:(NSDictionary *)params complationHandle:(void(^)(id responseObject, NSError *error))completed;
3.在.m 中#import “AFNetworking/AFNetworking.h”,并實(shí)現(xiàn).h中定義的兩個(gè)函數(shù);
static AFHTTPSessionManager *manager = nil;
/** 單例一個(gè)AFHTTPSessionManager */
+ (AFHTTPSessionManager *)defaultManager {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [AFHTTPSessionManager manager];
// 設(shè)置接受解析的內(nèi)容類(lèi)型
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"text/json",@"text/plain",@"text/javascript",@"application/json", nil];
});
? ?return manager;
}
+ (id)GET:(NSString *)path parameters:(NSDictionary *)params complationHandle:(void (^)(id, NSError *))completed {
NSLog(@"Request Path: %@, params %@", path, params);
return [[self defaultManager] GET:path parameters:params success:^(NSURLSessionDataTask * _Nonnull task, id? _Nonnull responseObject) {
completed(responseObject,nil);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
[SVProgressHUD dismiss];
NSLog(@"GET ERROR: %@",error.userInfo);
}];
}
+ (id)POST:(NSString *)path parameters:(NSDictionary *)params complationHandle:(void (^)(id, NSError *))completed {
return [[self defaultManager] POST:path parameters:params success:^(NSURLSessionDataTask * _Nonnull task, id? _Nonnull responseObject) {
completed(responseObject,nil);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
[SVProgressHUD dismiss];
NSLog(@"POST ERROR: %@",error.userInfo);
}];
}
4.接下來(lái)是它的使用方法
? ? (1)導(dǎo)入頭文件
#import "LsxNetManager.h"
? ? (2)直接調(diào)用
?[BaseNetManager POST:[NSString stringWithFormat:@"%s/appa/company/collectUserList",URLL] ? ? ? ? ? parameters:params? complationHandle:^(id responseObject, NSError *error){
? ? NSLog(@"服務(wù)器返回的數(shù)據(jù):%@----------出錯(cuò)信息:%@",responseObject,error);
}];