#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