[iOS微博项目 - 3.3] - 封装网络请求

 
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

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。