AFNetWorking的方法,平时使用也就够用了,但是为了在以后程序中可以多次利用,所以进行了二次封装。我的每一个项目中都会创建一个基类,在基类中进行navigationController的设置,以及网络请求的封装。这样,在整个项目中的UIViewController继承这个基类,那么在其他页面中就可以使用这个积累中的方法。
以下是我的AFNetWorking二次封装
- .h文件中
// 网络请求类型
typedefNS_ENUM(NSUInteger,HttpRequestType) {
//get请求
HttpRequestTypeGet =0,
// post请求
HttpRequestTypePost
};
/**
*发送网络请求
*
*@param url请求的网址字符串
*@param parameters请求的参数
*@param type请求的类型
*@param success请求成功的结果
*@param failure请求失败的结果
*/
- (void)networkRequest:(NSString*)url andParameters:(NSDictionary*)parameters andRequestType:(HttpRequestType*)type success:(void(^)(id responseObject))success failure:(void(^)(NSError* error))failure;
/**
*上传图片
*
*@param URLString 上传图片的网址字符串
*@param parameters 上传图片的参数
*@param uploadParam 上传图片的信息
*@param success 上传成功的回调
*@param failure 上传失败的回调
*/
- (void)uploadWithURLString:(NSString*)url parameters:(id)parameters uploadParam:(UploadParam *)uploadParam success:(void(^)())success failure:(void(^)(NSError*error))failure;
- .m文件中
//网络请求
-(void)networkRequest:(NSString *)url andParameters:(NSDictionary *)parameters andRequestType:(HttpRequestType)type success:(void (^)(id responseObject))success failure:(void (^)(NSError * error))failure{
if (type == 0) {
[self.mgr GET:url parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (success) {
success(responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (failure) {
failure(error);
}
}];
}
if (type == 1){
[self.mgr POST:url parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (success) {
success(responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"error%@",error);
if (failure) {
failure(error);
}
}];
}
}
-(void)uploadWithURLString:(NSString *)url parameters:(id)parameters uploadParam:(NSDictionary *)uploadParam success:(void (^)())success failure:(void (^)(NSError *))failure{
[self.mgr POST:url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
[formData appendPartWithFileData:(图片的二进制数据) name:(服务器对应的参数名称) fileName:(文件的名称(上传到服务器后,服务器保存的文件名)) mimeType:(文件的MIME类型(image/png,image/jpg等))];
} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject){
if (success) {
success(responseObject);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (failure) {
failure(error);
}
}];
}