A.封装网络请求
1.需求
为了避免代码冗余和对于AFN框架的多处使用导致耦合性太强,所以把网络请求封装成自己的工具类,以后便于更换网络框架。
2.思路
创建一个自定义工具类,提供类方法来实现网络请求
3.实现
1 // 2 // HVWNetworkTool.h 3 // HVWWeibo 4 // 5 // Created by hellovoidworld on 15/2/9. 6 // Copyright (c) 2015年 hellovoidworld. All rights reserved. 7 // 8 9 #import <Foundation/Foundation.h> 10 11 @interface HVWNetworkTool : NSObject 12 13 /** get方法发送请求 */ 14 + (void) get:(NSString *)url parameters:(NSDictionary *)parameters success:(void (^)(id responseObject))success failure:(void (^)(NSError *error)) failure; 15 16 /** post方法发送请求 */ 17 + (void) post:(NSString *)url parameters:(NSDictionary *)parameters success:(void (^)(id responseObject))success failure:(void (^)(NSError * error))failure; 18 19 /** post方法发送请求(带文件数据) */ 20 + (void) post:(NSString *)url parameters:(NSDictionary *) parameters filesData:(NSArray *)filesData success:(void (^)(id responseObject))success failure:(void (^)(NSError *error))failure; 21 22 @end
1 // 2 // HVWNetworkTool.m 3 // HVWWeibo 4 // 5 // Created by hellovoidworld on 15/2/9. 6 // Copyright (c) 2015年 hellovoidworld. All rights reserved. 7 // 8 9 #import "HVWNetworkTool.h" 10 #import "AFNetworking.h" 11 #import "HVWFileDataParam.h" 12 13 @implementation HVWNetworkTool 14 15 /** get方法发送请求 */ 16 + (void) get:(NSString *)url parameters:(NSDictionary *)parameters success:(void (^)(id responseObject))success failure:(void (^)(NSError *error)) failure { 17 // 创建http操作管理者 18 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 19 20 // 发送请求 21 [manager GET:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 22 if (success) { 23 success(responseObject); 24 } 25 } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 26 if (failure) { 27 failure(error); 28 } 29 }]; 30 } 31 32 /** post方法发送请求 */ 33 + (void) post:(NSString *)url parameters:(NSDictionary *)parameters success:(void (^)(id responseObject))success failure:(void (^)(NSError * error))failure { 34 // 创建http操作管理者 35 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 36 37 // 发送请求 38 [manager POST:url parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 39 if (success) { 40 success(responseObject); 41 } 42 } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 43 if (failure) { 44 failure(error); 45 } 46 }]; 47 } 48 49 50 /** post方法发送请求(带文件数据) */ 51 + (void) post:(NSString *)url parameters:(NSDictionary *) parameters filesData:(NSArray *)filesData success:(void (^)(id responseObject))success failure:(void (^)(NSError *error))failure { 52 // 创建http操作管理者 53 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 54 55 // 发送请求 56 [manager POST:url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 57 58 // 读取文件参数 59 for (HVWFileDataParam *fileDataParam in filesData) { 60 [formData appendPartWithFileData:fileDataParam.fileData name:fileDataParam.name fileName:fileDataParam.fileName mimeType:fileDataParam.mimeType]; 61 } 62 } success:^(AFHTTPRequestOperation *operation, id responseObject) { 63 if (success) { 64 success(responseObject); 65 } 66 } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 67 if (failure) { 68 failure(error); 69 } 70 }]; 71 } 72 73 @end