基于AFNetworking封装的网络请求工具类【原创】

今天给大家共享一个我自己封装的网络请求类,希望能帮助到大家。

前提,导入AFNetworking框架,


关于修改AFN源码:通常序列化时做对text/plan等的支持时,可以一劳永逸的修改源代码,在acceptableContentTypes中修改成如下即可:

self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"image/png",@"text/html",nil];

GGRequest.h

#define JSON 100

#define XML  101

#define DATA 102

 #define kPOST 200

#define kGET  201

为了方便你的使用,建议你把这几个宏定义放在pch文件中,如果不知道pch文件是什么那就放在你将要做网络请求的类里面。

 1 #import <Foundation/Foundation.h>
 2 
 3 @interface GGRequest : NSObject
 4 /**
 5  *  网络请求方法
 6  *
 7  *  @param url          将要访问的链接
 8  *  @param param        传入的参数
 9  *  @param requestStyle 请求方式
10  *  @param serializer   数据返回形式
11  *  @param success      请求成功后调用
12  *  @param failure      请求失败后调用
13  */
14 
15 + (void)sendGetOrPostRequest:(NSString *)url param:(NSMutableDictionary *)param requestStyle:(NSInteger)requestStyle setSerializer:(NSInteger)serializer success:(void (^)(id data))success
16                      failure:(void (^)(NSError *error))failure;
17 
18 @end

GGRequest.m

 1 #import "GGRequest.h"
 2 #import "AFNetworking.h"
 4 #import "MBProgressHUD+MJ.h"//mj进一步封装的显示进程的类。
 5 
 6 
 7 
 8 @implementation GGRequest
 9 
10 /**
11  *  网络请求方法
12  *
13  *  @param url          将要访问的链接
14  *  @param param        传入的参数
15  *  @param requestStyle 请求方式
16  *  @param serializer   数据返回形式
17  *  @param success      请求成功后调用
18  *  @param failure      请求失败后调用
19  */
20 + (void)sendGetOrPostRequest:(NSString *)url param:(NSMutableDictionary *)param requestStyle:(NSInteger)requestStyle setSerializer:(NSInteger)serializer success:(void (^)(id data))success
21                    failure:(void (^)(NSError *error))failure
22 {
23     // 创建请求 管理者
24     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
25     
26     // 设置序列化器
27     switch(serializer)
28     {
29         case 100:
30         {
31            // manager.requestSerializer = [AFJSONRequestSerializer serializer];
32             [manager setResponseSerializer:[AFJSONResponseSerializer serializer]];//默认(返回的是json并自动解析成数组或字典)
33         }break;
34         case 101:
35         {
36   
37             [manager setResponseSerializer:[AFXMLParserResponseSerializer serializer]];//返回的是xml,afn不支持xml解析
38         }break;
39         case 102:
40         {
41            // manager.requestSerializer = [AFHTTPRequestSerializer serializer];
42             [manager setResponseSerializer:[AFHTTPResponseSerializer serializer]];//返回的是data并自动解析成数组或字典
43             
44         }break;
45     }
46 
47     // 3.发送请求
48     if(requestStyle == 200)
49     {
50         [manager POST:url parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject)
51         {
52            DLog(@"请求成功");
53            DLog(@"返回的数据类型是:%@", [responseObject class]);
54            success(responseObject);
55             
56         } failure:^(AFHTTPRequestOperation *operation, NSError *error)
57         {
58            DLog(@"请求失败");
59            DLog(@"%@", error);
60     
61         }];
62         
63     }
64     else if(requestStyle == 201)
65     {
66         [manager GET:url parameters:param success:^(AFHTTPRequestOperation *operation, id responseObject) {
67             DLog(@"请求成功");
68             DLog(@"返回的数据类型是:%@", [responseObject class]);
69             DLog(@"%@", responseObject);
70             success(responseObject);
71             
72         } failure:^(AFHTTPRequestOperation *operation, NSError *error)
73          {
74              DLog(@"请求失败");
75              DLog(@"%@", error);
76              
77          }];
78         
79      }
80 }
81 
82 @end
原文地址:https://www.cnblogs.com/g-ios/p/4582183.html