首先,这篇文章针对与菜鸟级别,大神路过的请勿拍砖。
在很多时候我们时候,我们在使用AFNetworking 网络请求的时候,都要用到AFHTTPSessionManager 的类,去创建然后去设置一些不太用的到的参数。多数情况下,这些都是在无用功。
所以在闲暇的时候,把AF二次封装了一下,供自己在项目中的使用。在下次的博客中,会放出AFNetworking 的全面解析,欢迎指导学习。
现在以post请求为例:
/**
* 网络请求类型
*/
typedef NS_ENUM(NSUInteger,HttpRequestType) {
/**
* get请求
*/
HttpRequestTypeGet = 0,
/**
* post请求
*/
HttpRequestTypePost
};
/**
* 发送post请求
*
* @param URLString 请求的网址字符串
* @param parameters 请求的参数
* @param progress 请求的进度条
* @param success 请求成功的回调
* @param failure 请求失败的回调
*/
+ (void)postWithURLString:(NSString *)URLString
parameters:(id)parameters
progress:(void(^)(NSProgress *progress ))progress
success:(void (^)(id responseObject))success
failure:(void (^)(NSError *error))failure;
.h文件中我们去实现下把不必要的代码写进去
#pragma mark -- POST请求 --
+ (void)postWithURLString:(NSString *)URLString
parameters:(id)parameters
progress:(void(^)(NSProgress * _Nullable))progress
success:(void (^)(id))success
failure:(void (^)(NSError *))failure{
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json", @"text/plain", @"text/html", nil];
[manager POST:URLString parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {
progress(uploadProgress);
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (success) {
success(responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (failure) {
failure(error);
}
}];
}
上面我们可以看到_Nullable型就是可以为null的修饰符,Xcode在推出swift的时候,用到一个宏定义这个宏默认是不能为null的。这个在以后的AFNetworking 详细解析中会讲解的。