//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;
}