AFN3.0封裝一層工具類

weixin_34337265發表於2016-07-28

#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

相關文章