前言
AFNetworking其實實現(xiàn)的原理就是使用NSURLSession類,只不過使用對NSURLSession進行了封裝,使得我們更加使用起來更加的方便, 其中都是通過AFHTTPSessionManager這個類來實現(xiàn)的!!!
1.AFHTTPSessionManager的Get請求:
NSMutableDictionary *paramter = [NSMutableDictionary dictionary];
paramter[@"q"] = @"iOS";
paramter[@"count"] = @"30";
[[AFHTTPSessionManager manager]GET:@"https://api.douban.com/v2/user" parameters:paramter
progress:^(NSProgress * _Nonnull downloadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"responseObject:%@",responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"error:%@",error);
}];
2.AFHTTPSessionManager的Post請求:
NSMutableDictionary *paramer = [NSMutableDictionary dictionary];
paramer[@"q"] = @"iOS";
paramer[@"count"] = @"30";
[[AFHTTPSessionManager manager]POST:@"" parameters:paramer
progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"請求成功");
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"請求失敗");
}];
3.網(wǎng)絡請求封裝類:
NetWookTool.h
#import <Foundation/Foundation.h>
#import <AFNetworking/AFNetworking.h>
typedef void(^successBlock)(id response);
typedef void(^failureBlock)(NSError *error);
@interface NetWookTool : NSObject <NSCopying>
+(instancetype)shareNetWookTool;
-(void)GetWithUrl:(NSString *)url parameter:(id)paramter success:(successBlock)success failure:(failureBlock)failure;
-(void)PostWithUrl:(NSString *)url paramter:(id)paramter success:(successBlock)success failure:(failureBlock)failure;
@end
NetWookTool.m
#import "NetWookTool.h"
#import <AFNetworking/AFNetworking.h>
//靜態(tài)的作用是防止外界訪問
static NetWookTool *_tool = nil;
@implementation NetWookTool
+(instancetype)allocWithZone:(struct _NSZone *)zone{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_tool = [super allocWithZone:zone];
});
return _tool;
}
+(instancetype)shareNetWookTool{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_tool = [[NetWookTool alloc]init];
});
return _tool;
}
-(id)copyWithZone:(NSZone *)zone{
return _tool;
}
// AFHTTPSessionManager的設置
-(AFHTTPSessionManager *)manager{
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//HTTPS需要的東西了
//manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
// json的請求
manager.requestSerializer = [AFJSONRequestSerializer serializer];
// json的響應
manager.responseSerializer = [AFJSONResponseSerializer serializer];
//xml的響應
// manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
//響應的接受的數(shù)據(jù)的格式
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/tml",@"application/json",@"text/json", nil];
return manager;
}
-(void)GetWithUrl:(NSString *)url parameter:(id)paramter success:(successBlock)success failure:(failureBlock)failure{
[[AFHTTPSessionManager manager]GET:url parameters:paramter progress:^(NSProgress * _Nonnull downloadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (responseObject) {
success(responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (error) {
failure(error);
}
}];
}
-(void)PostWithUrl:(NSString *)url paramter:(id)paramter success:(successBlock)success failure:(failureBlock)failure{
[[AFHTTPSessionManager manager]POST:url parameters:paramter progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (responseObject) {
success(responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (error) {
failure(error);
}
}];
}
@end
結(jié)語: 這個就是我們工作中經(jīng)常使用的網(wǎng)絡請求的封裝類,在我們的工作中經(jīng)常使用,希望能給你帶來好處?。?!