::::loadingView是我根据公司需要 自己封装的一个动画文件。只需要调用 start stop就可以实现loadingView的加载和消失。略过。
基于AFNetWorking的封装。单例模式,在工程中调用更加方便,不用每次请求创建一个manager。
.h文件
#import <Foundation/Foundation.h>
#import "AFNetworking.h"
typedef void(^SuccessType)(id responsData);
typedef void(^Falied) (NSError *error);
@interface NETAnalysisTool : NSObject
@property(nonatomic,copy)AFHTTPSessionManager *manager;
+(instancetype)sharedInstance;
-(void)POST:(NSString *)url parameters:(NSDictionary *)dict RegisterSuccess:(SuccessType)
successBlock Falied:(Falied)faliedBlock;
-(void)GET:(NSString *)url Success:(SuccessType)successBlock
Falied:(Falied)faliedBlock;
.m文件
#import "NETAnalysisTool.h"
#import "LoadingView.h"
@interface NETAnalysisTool ()
@implementation NETAnalysisTool
+(instancetype)sharedInstance
{
static NETAnalysisTool *s_tance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
s_tance = [[NETAnalysisTool alloc]init];
});
return s_tance;
}
-(id)init
{
if (self = [super init]) {
_manager = [[AFHTTPSessionManager alloc]init];
}
return self;
}
-(void)POST:(NSString *)url parameters:(NSDictionary *)dict RegisterSuccess:(SuccessType)successBlock
Falied:(Falied)faliedBlock
{
[LoadingView start];
_manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/xml",@"image/gif" ,nil];
[_manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];
_manager.requestSerializer.timeoutInterval = 10.f;
[_manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];
[_manager POST:url parameters:dict success:^(NSURLSessionDataTask *task, id responseObject) {
[LoadingView stop];
if (successBlock) {
successBlock(responseObject);
}
} failure:^(NSURLSessionDataTask *task, NSError *error) {
[LoadingView stop];
if (faliedBlock) {
faliedBlock(error);
}
}];
}
-(void)GET:(NSString *)url Success:(SuccessType)successBlock
Falied:(Falied)faliedBlock
{
[LoadingView start];
_manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",@"text/xml",@"image/gif" ,nil];
[_manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];
_manager.requestSerializer.timeoutInterval = 10.f;
[_manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];
[_manager GET:url parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
if (successBlock) {
[LoadingView stop];
successBlock(responseObject);
}
} failure:^(NSURLSessionDataTask *task, NSError *error) {
[LoadingView stop];
if (faliedBlock) {
faliedBlock(error);
}
}];
}
@end