记录自写AFNetWorking封装类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录自写AFNetWorking封装类相关的知识,希望对你有一定的参考价值。

 

  1 static AFHTTPRequestOperationManager *manager;
  2 @implementation AFNetWorkingHelper
  3 
  4 +(void)httpGet:(NSString *)getUrl success:(void (^)(id json))success fail:(void (^)(NSError *error))fail other:(void (^)(id json))other
  5 {
  6 AFHTTPRequestOperationManager *manager = [self httpManageOption:getUrl];
  7 [manager GET:[self UrlOption:getUrl] parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject)
  8 {
  9 [self messageOption:responseObject success:success other:other];
 10 } failure:^(AFHTTPRequestOperation *operation, NSError *error)
 11 {
 12 [self errorOption:error];
 13 fail(error);
 14 }];
 15 }
 16 
 17 +(void)httpGetWithParameters:(NSString *)getUrl message:(NSMutableDictionary *)message success:(void (^)(id json))success fail:(void (^)(NSError *error))fail other:(void (^)(id json))other
 18 {
 19 AFHTTPRequestOperationManager *manager = [self httpManageOption:getUrl];
 20 NSMutableDictionary *parameters=[self parametersOption:message ];
 21 [manager GET:[self UrlOption:getUrl] parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject)
 22 {
 23 [self messageOption:responseObject success:success other:other];
 24 } failure:^(AFHTTPRequestOperation *operation, NSError *error)
 25 {
 26 [self errorOption:error];
 27 fail(error);
 28 }];
 29 }
 30 
 31 +(void)httpPost:(NSString *)postUrl message:(NSMutableDictionary *)message success:(void (^)(id json))success fail:(void (^)(NSError *error))fail other:(void (^)(id json))other
 32 {
 33 AFHTTPRequestOperationManager *manager = [self httpManageOption:postUrl];
 34 NSMutableDictionary *parameters=[self parametersOption:message];
 35 [manager POST:[self UrlOption:postUrl] parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject)
 36 {
 37 [self messageOption:responseObject success:success other:other];
 38 } failure:^(AFHTTPRequestOperation *operation, NSError *error)
 39 {
 40 [self errorOption:error];
 41 fail(error);
 42 }];
 43 }
 44 
 45  
 46 
 47 
 48 +(void)httpGet:(NSString *)getUrl success:(void (^)(id json))success fail:(void (^)(NSError *error))fail modelClass:(Class)class other:(void (^)(id json))other
 49 {
 50 AFHTTPRequestOperationManager *manager = [self httpManageOption:getUrl];
 51 [manager GET:[self UrlOption:getUrl] parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject)
 52 {
 53 [self messageOption:responseObject success:success modelClass:class other:other];
 54 } failure:^(AFHTTPRequestOperation *operation, NSError *error)
 55 {
 56 
 57 [self errorOption:error];
 58 fail(error);
 59 }];
 60 }
 61 
 62 +(void)httpGetWithParameters:(NSString *)getUrl message:(NSMutableDictionary *)message success:(void (^)(id json))success fail:(void (^)(NSError *error))fail modelClass:(Class)class other:(void (^)(id json))other
 63 {
 64 AFHTTPRequestOperationManager *manager = [self httpManageOption:getUrl];
 65 NSMutableDictionary *parameters=[self parametersOption:message];
 66 [manager GET:[self UrlOption:getUrl] parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject)
 67 {
 68 [self messageOption:responseObject success:success modelClass:class other:other];
 69 } failure:^(AFHTTPRequestOperation *operation, NSError *error)
 70 {
 71 [self errorOption:error];
 72 fail(error);
 73 }];
 74 }
 75 
 76 +(void)httpPost:(NSString *)postUrl message:(NSMutableDictionary *)message success:(void (^)(id json))success fail:(void (^)(NSError *error))fail modelClass:(Class)class other:(void (^)(id json))other
 77 {
 78 AFHTTPRequestOperationManager *manager = [self httpManageOption:postUrl];
 79 NSMutableDictionary *parameters=[self parametersOption:message];
 80 [manager POST:[self UrlOption:postUrl] parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject)
 81 {
 82 [self messageOption:responseObject success:success modelClass:class other:other];
 83 } failure:^(AFHTTPRequestOperation *operation, NSError *error)
 84 {
 85 
 86 [self errorOption:error];
 87 fail(error);
 88 }];
 89 }
 90 
 91  
 92 
 93  
 94 
 95 
 96 /**
 97 * 获取单利对象
 98 *
 99 * @param url <#url description#>
100 *
101 * @return <#return value description#>
102 */
103 +(AFHTTPRequestOperationManager *)httpManageOption:(NSString *)url
104 {
105 
106 static dispatch_once_t onceToken;
107 dispatch_once(&onceToken, ^{
108 manager = [AFHTTPRequestOperationManager manager];
109 manager.responseSerializer = [AFHTTPResponseSerializer serializer];
110 manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html" ,@"text/plain",nil];
111 if([url rangeOfString:@"https"].location!=NSNotFound)
112 {
113 
114 manager.securityPolicy.allowInvalidCertificates = YES;
115 manager.securityPolicy.validatesDomainName=NO;
116 }
117 });
118 return manager;
119 }
120 
121  
122 
123 /**
124 * 参数统一处理方法
125 *
126 * @param parameters <#parameters description#>
127 *
128 * @return <#return value description#>
129 */
130 +(NSMutableDictionary *)parametersOption:(NSMutableDictionary *)parameters
131 {
132 return parameters;
133 }
134 
135 
136 /**
137 * 返回数据通用操作
138 *
139 * @param result <#result description#>
140 * @param success <#success description#>
141 */
142 +(void)messageOption:(id)result success:(void (^)(id json))success other:(void (^)(id json))other
143 {
144 NSError *error;
145 NSDictionary *weatherDic;
146 if([result isKindOfClass:([NSDictionary class])])
147 {
148 weatherDic=result;
149 }
150 else
151 {
152 weatherDic = [NSJSONSerialization JSONObjectWithData:result options:NSJSONReadingMutableLeaves error:&error];
153 }
154 if([self resultVerification:weatherDic])
155 {
156 success(weatherDic);
157 }
158 if(other)
159 {
160 other(weatherDic);
161 }
162 
163 }
164 
165 
166 +(void)messageOption:(id)result success:(void (^)(id json))success modelClass:(Class)class other:(void (^)(id json))other
167 {
168 NSError *error;
169 NSDictionary *weatherDic;
170 if([result isKindOfClass:([NSDictionary class])])
171 {
172 weatherDic=result;
173 }
174 else
175 {
176 weatherDic = [NSJSONSerialization JSONObjectWithData:result options:NSJSONReadingMutableLeaves error:&error];
177 }
178 if([self resultVerification:weatherDic])
179 {
180 success([class mj_objectWithKeyValues:result]);
181 }
182 if(other)
183 {
184 other(weatherDic);
185 }
186 
187 }
188 /**
189 * 发生错误调用方法
190 *
191 * @param error <#error description#>
192 */
193 +(void)errorOption:(NSError *)error
194 {
195 
196 
197 }
198 
199 +(NSString *)UrlOption:(NSString *)url
200 {
201 return url;
202 }
203 
204  
205 
206  
207 
208 +(BOOL)resultVerification:(NSDictionary * )dic
209 {
210 return YES;
211 }

引入项目后继承,主要重写

resultVerification、
UrlOption、
errorOption、
messageOption这几个个方法

以上是关于记录自写AFNetWorking封装类的主要内容,如果未能解决你的问题,请参考以下文章

自写Date工具类

iOS 自己封装的网络请求,json解析的类

最新 AFNetworking 3.0 简单实用封装

基于AFNetworking3.0网络封装

iOS_SN_基于AFNetworking3.0网络封装

iOS AFNetworking 3.0以上使用