基于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

 

你可能感兴趣的:(NetWork)