网上也有很多的对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请求的封装,如果有好的建议和好的文章,我很乐意学习!