您的位置:首页 > 移动开发 > IOS开发

iOS开发:对AFNetworking进行封装

2016-12-07 09:27 176 查看
网上也有很多的对AFNetworking进行封装的方法,此处我只是简单的记录一下;

首先,我们创建一个继承与NSObject的类,定义两个属性,分别是请求成功和请求失败的,.h中的代码如下:

#import <Foundation/Foundation.h>

typedef void (^SuccessBlock)(NSDictionary *data);
typedef void (^FailureBlock)(NSError *error);

@interface SYNetworkingManager : NSObject

@property (nonatomic, copy) SuccessBlock successBlock;
@property (nonatomic, copy) FailureBlock failureBlock;

/**
*  发送get请求
*
*  @param URLString  请求的网址字符串
*  @param parameters 请求的参数
*  @param success    请求成功的回调
*  @param failure    请求失败的回调
*/
+ (void)getWithURLString:(NSString *)urlString
parameters:(id)parameters
success:(SuccessBlock)successBlock
failure:(FailureBlock)failureBlock;

/**
*  发送post请求
*
*  @param URLString  请求的网址字符串
*  @param parameters 请求的参数
*  @param success    请求成功的回调
*  @param failure    请求失败的回调
*/
+ (void)postWithURLString:(NSString *)urlString
parameters:(id)parameters
success:(SuccessBlock)successBlock
failure:(FailureBlock)failureBlock;

@end

.m中的实现如下:

+ (void)getWithURLString:(NSString *)urlString
parameters:(id)parameters
success:(SuccessBlock)successBlock
failure:(FailureBlock)failureBlock
{
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
/**
*  可以接受的类型
*/
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
/**
*  请求队列的最大并发数
*/
//    manager.operationQueue.maxConcurrentOperationCount = 5;
/**
*  请求超时的时间
*/
manager.requestSerializer.timeoutInterval = outTime;
[manager GET:urlString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
if (successBlock) {
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];
successBlock(dic);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (failureBlock) {
failureBlock(error);
NSLog(@"网络异常 - T_T%@", error);
}
}];
}

+ (void)postWithURLString:(NSString *)urlString
parameters:(id)parameters
success:(SuccessBlock)successBlock
failure:(FailureBlock)failureBlock
{
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.requestSerializer.timeoutInterval = outTime;
[manager POST:urlString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
if (successBlock) {
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];
successBlock(dic);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (failureBlock) {
failureBlock(error);
NSLog(@"网络异常 - T_T%@", error);
}
}];
}

以上只是对post和get请求的封装,如果有好的建议和好的文章,我很乐意学习!

文/First灬DKS(简书作者)

原文链接:http://www.jianshu.com/p/bf4e62fe9474

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: