您的位置:首页 > 理论基础 > 计算机网络

基于AFNet手动封装网络解析单例

2016-05-23 00:00 447 查看
摘要: 网络解析

::::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 ()

@end

@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);

}

} fail
7fe8
ure:^(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: