AFN3.0封装一层工具类

#import

#import "AFNetworking.h"

@interface HttpRequest : NSObject

typedef void(^success)(NSURLSessionDataTask *task, id responseObject);

typedef void(^failure)(NSURLSessionDataTask *task, NSError *error);

+ (void)POST:(NSString *)URLString

parameters:(NSMutableDictionary *)parameters andSuccess:(success)successBlock andFailure:(failure)failureBlock;

@end


#import "HttpRequest.h"

#define kTimeOutInterval 20.0f

@implementation HttpRequest

+(AFHTTPSessionManager *)manager

{

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

// 超时时间

manager.requestSerializer.timeoutInterval = kTimeOutInterval;

// 声明上传的是json格式的参数,需要你和后台约定好,不然会出现后台无法获取到你上传的参数问题

manager.requestSerializer = [AFHTTPRequestSerializer serializer]; // 上传普通格式

//    manager.requestSerializer = [AFJSONRequestSerializer serializer]; // 上传JSON格式

// 声明获取到的数据格式

manager.responseSerializer = [AFHTTPResponseSerializer serializer]; // AFN不会解析,数据是data,需要自己解析

//    manager.responseSerializer = [AFJSONResponseSerializer serializer]; // AFN会JSON解析返回的数据

// 个人建议还是自己解析的比较好,有时接口返回的数据不合格会报3840错误,大致是AFN无法解析返回来的数据

return manager;

}

+ (void)POST:(NSString *)URLString

parameters:(NSMutableDictionary *)parameters andSuccess:(success)successBlock andFailure:(failure)failureBlock

{

// 创建请求类

AFHTTPSessionManager *manager = [self manager];

[manager POST:URLString

parameters:parameters

progress:^(NSProgress * _Nonnull uploadProgress) {

// 这里可以获取到目前数据请求的进度

} success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

// 请求成功

if (successBlock) {

successBlock(task,responseObject);

}

} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

// 请求失败

if (failureBlock) {

failureBlock(task,error);

}

}];

}

@end

你可能感兴趣的:(AFN3.0封装一层工具类)