今天給你們共享一個我本身封裝的網絡請求類,但願能幫助到你們。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