基於AFNetworking封裝的網絡請求工具類【原創】

今天給你們共享一個我本身封裝的網絡請求類,但願能幫助到你們。javascript

前提,導入AFNetworking框架,html


關於修改AFN源碼:一般序列化時作對text/plan等的支持時,能夠一勞永逸的修改源代碼,在acceptableContentTypes中修改爲以下便可:java

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

 

 

GGRequest.h數組

#define JSON 100網絡

#define XML  101app

#define DATA 102框架

 #define kPOST 200url

#define kGET  201spa

爲了方便你的使用,建議你把這幾個宏定義放在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
相關文章
相關標籤/搜索