基于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
::::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
相关文章推荐
- okhttp通过post发送Json数据到php 更新数据库
- 2016网络公司排名
- 【C#】HTTP请求GET,POST
- C# HttpWebRequest 上传大文件 超时问题
- java伪造http请求多文件上传
- BZOJ1391 [Ceoi2008]order
- 僵尸网络
- IIS7/IIS7.5 URL 重写 HTTP 重定向到 HTTPS的方法
- 20159217《网络攻防实践》第十二周学习总结
- Linux查看网络端口对应的程序
- tcp正在连接......
- 缓存服务之varnish的简单应用
- HTTP实用头字段
- 计算机网络-计算机网络和因特网
- HTTP响应
- TCP的SACK选项功能
- C#网络程序设计1-6:百度百科-c#委托
- 计算机网络之HTTP代理服务器
- HTTP长连接与短连接
- 网络I/O模型