網(wǎng)上針對af的封裝也有好多了,其實封裝主要是為了我們能夠更好的復用,減少不必要的代碼量!更多的好處就不多說了,話不多說直接上代碼。
1、新建一個LsxNetManager的工具類,繼承自NSObject;?
2.使用類方法創(chuàng)建兩個GET 和 POST請求函數(shù);
/** 對AFHTTPSessionManager的GET請求方法進行了封裝 */
+ (id)GET:(NSString *)path parameters:(NSDictionary *)params complationHandle:(void(^)(id responseObject, NSError *error))completed;
/** 對AFHTTPSessionManager的POST請求方法進行了封裝 */
+ (id)POST:(NSString *)path parameters:(NSDictionary *)params complationHandle:(void(^)(id responseObject, NSError *error))completed;
3.在.m 中#import “AFNetworking/AFNetworking.h”,并實現(xiàn).h中定義的兩個函數(shù);
static AFHTTPSessionManager *manager = nil;
/** 單例一個AFHTTPSessionManager */
+ (AFHTTPSessionManager *)defaultManager {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager = [AFHTTPSessionManager manager];
// 設(shè)置接受解析的內(nè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.接下來是它的使用方法
? ? (1)導入頭文件
#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ù):%@----------出錯信息:%@",responseObject,error);
}];