AFNetworkingパッケージに基づくネットワークリクエストツール類【オリジナル】

13134 ワード

今日は自分でカプセル化したネットワークリクエストクラスを共有して、皆さんに助けてほしいです.
前提として、AFNetworkingフレームワークを導入し、
AFNソースの修正について:通常シーケンス化時にtext/planなどのサポートを行う場合、ソースコードを一労永逸に修正することができ、acceptableContentTypeでは以下のように修正すればよい.
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 
 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