AFNetworking 3.0 GET POST 的简单封装(代理回调)
2016-01-14 22:55
351 查看
//GET 方法
+ (void)getJSON:(NSString*)url
delegate:(id) delegate
didFinishSelector:(SEL)selector
didFailSelector:(SEL)selector2 {
NSURL* requestUrl = [NSURL URLWithString:url];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:requestUrl.absoluteString parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSDictionary *dic = [self dictionaryWithJsonString:result];
if (delegate) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[delegate performSelector:selector withObject:dic];
#pragma clang diagnostic pop
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSData *data = [error.userInfo objectForKey:@"com.alamofire.serialization.response.error.data"];
NSString *result =[[ NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
if (delegate) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[delegate performSelector:selector2 withObject:result];
#pragma clang diagnostic pop
}
}];
}
//POST方法
+ (void)getPOST:(NSString *)url
param:(NSDictionary *)param
delegate:(id)delegate
didFinishSelector:(SEL)selector
didFailSelector:(SEL)selector2 {
NSURL *requestUrl = [NSURL URLWithString:url];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//申明返回的结果是json类型
manager.responseSerializer = [AFJSONResponseSerializer serializer];
//申明请求的数据是json类型
manager.requestSerializer = [AFJSONRequestSerializer serializer];
//如果报接受类型不一致请替换一致text/html或别的
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
[manager POST:requestUrl.absoluteString parameters:param progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSDictionary *dic = [self dictionaryWithJsonString:result];
if (delegate) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[delegate performSelector:selector withObject:dic];
#pragma clang diagnostic pop
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSData *data = [error.userInfo objectForKey:@"com.alamofire.serialization.response.error.data"];
NSString *result = [[ NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
if (delegate) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[delegate performSelector:selector2 withObject:result];
#pragma clang diagnostic pop
}
}];
}
/*!
* @brief 把格式化的JSON格式的字符串转换成字典
* @param jsonString JSON格式的字符串
* @return 返回字典
*/
+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {
if (jsonString == nil) {
return nil;
}
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *err;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:&err];
if (err) {
DLog(@"json解析失败:%@",err);
return nil;
}
return dic;
}
+ (void)getJSON:(NSString*)url
delegate:(id) delegate
didFinishSelector:(SEL)selector
didFailSelector:(SEL)selector2 {
NSURL* requestUrl = [NSURL URLWithString:url];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:requestUrl.absoluteString parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSDictionary *dic = [self dictionaryWithJsonString:result];
if (delegate) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[delegate performSelector:selector withObject:dic];
#pragma clang diagnostic pop
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSData *data = [error.userInfo objectForKey:@"com.alamofire.serialization.response.error.data"];
NSString *result =[[ NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
if (delegate) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[delegate performSelector:selector2 withObject:result];
#pragma clang diagnostic pop
}
}];
}
//POST方法
+ (void)getPOST:(NSString *)url
param:(NSDictionary *)param
delegate:(id)delegate
didFinishSelector:(SEL)selector
didFailSelector:(SEL)selector2 {
NSURL *requestUrl = [NSURL URLWithString:url];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//申明返回的结果是json类型
manager.responseSerializer = [AFJSONResponseSerializer serializer];
//申明请求的数据是json类型
manager.requestSerializer = [AFJSONRequestSerializer serializer];
//如果报接受类型不一致请替换一致text/html或别的
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
[manager POST:requestUrl.absoluteString parameters:param progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSDictionary *dic = [self dictionaryWithJsonString:result];
if (delegate) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[delegate performSelector:selector withObject:dic];
#pragma clang diagnostic pop
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSData *data = [error.userInfo objectForKey:@"com.alamofire.serialization.response.error.data"];
NSString *result = [[ NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
if (delegate) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
[delegate performSelector:selector2 withObject:result];
#pragma clang diagnostic pop
}
}];
}
/*!
* @brief 把格式化的JSON格式的字符串转换成字典
* @param jsonString JSON格式的字符串
* @return 返回字典
*/
+ (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {
if (jsonString == nil) {
return nil;
}
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSError *err;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData
options:NSJSONReadingMutableContainers
error:&err];
if (err) {
DLog(@"json解析失败:%@",err);
return nil;
}
return dic;
}
相关文章推荐
- 列表组件
- extjs Post方法提交json格式的数据到php
- 封装网络请求
- OC命名规范及代码注释规范
- knit使用安装 ecstore knit位置 及调用路径
- java学习笔记03——核心技术
- PHP“Cannot use object of type stdClass as array”
- iOS开发中崩溃分析-BugHD的使用
- 蓝懿ios技术交流和心得分享16.1.14
- Qt中项目一栏配置说明
- Micheal Nielsen's神经网络学习之二
- AngularJs 与Jquery的对比分析,超详细!
- UILabel 多行高度自适应 计算高度存在的 坑
- UI开发中Button基本方法
- 【javascript笔记】js构造器<六>
- constexpr讲解--C++11
- 【javascript笔记】js构造器
- 标准日本语第十七课(三)
- poj 2417 && poj3243(Baby-Step Giant-Step)
- Android性能优化之加快应用启动速度