// // YanCNetWorkManager.m // BorrowMoney // // Created by chengzhang Yan on 2016/10/6. // Copyright © 2016年 JuYi. All rights reserved. // #import "YanCNetWorkManager.h" /** 本类是对AFNetWorking 进行二次封装,并结合MBProgressHUD,给出基本信息提示 由于项目涉及到: 带/不带Token的GET/POST请求,以及很多请求中需要用到云盾的设备指纹请求,进行合并处理 @URLlStr:网络请求URL @parameters:请求参数 @finish:请求成功 @enError:请求失败 */ @implementation YanCNetWorkManager /** 无Token的POST请求 上传头像 及 工作照片 */ + (void)requestPostWithURLStr:(NSString *)URLStr fileData:(id)fileData name:(id)name fileName:(id)fileName mimeType:(id)mimeType parameters:(id)parameters finish:(void(^)(id dataDic))finish enError:(void(^)(NSError *error))enError { AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.requestSerializer = [AFHTTPRequestSerializer serializer]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData; manager.requestSerializer.timeoutInterval = 40.f; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain",@"application/json",@"text/json",@"text/javascript",@"text/html", @"charset=utf-8", nil]; [manager POST:URLStr parameters:parameters constructingBodyWithBlock:^(id _Nonnull formData) { // text是和后台约定的 [formData appendPartWithFileData:UIImageJPEGRepresentation(fileData,0.5) name:name fileName:fileName mimeType:mimeType]; } progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:nil]; finish(dataDic); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { enError(error); NSLog(@"error ===== %@", error); }]; } /** 无Token的GET请求 */ + (void)requestGETWithURLStr:(NSString *)URLStr parameters:(id)parameters finish:(void(^)(id dataDic))finish enError:(void(^)(NSError *error))enError { AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.requestSerializer = [AFHTTPRequestSerializer serializer]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData; manager.requestSerializer.timeoutInterval = 40.f; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain",@"application/json",@"text/json",@"text/javascript",@"text/html", @"charset=utf-8", nil]; [manager GET:URLStr parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:nil]; finish(dataDic); id obj = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil]; if ([obj isKindOfClass:[NSArray class]]||[obj isKindOfClass:[NSDictionary class]]) { //解决打印字典的时候汉子显示Unicode编码的问题 NSLog(@"%@ %@ ===== responseDictionary ==========%@",URLStr,[parameters descriptionWithLocale:parameters],[obj descriptionWithLocale:obj]); }else{ NSLog(@"%@ %@ ===== responseDictionary ==========%@",URLStr,[parameters descriptionWithLocale:parameters],obj); } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { enError(error); NSLog(@"error ===== %@", error); }]; } /** 无Token的POST请求 */ + (void)requestPostWithURLStr:(NSString *)URLStr parameters:(id)parameters finish:(void(^)(id dataDic))finish enError:(void(^)(NSError *error))enError { AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.requestSerializer = [AFHTTPRequestSerializer serializer]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; manager.requestSerializer.timeoutInterval = 40.f; manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain",@"application/json",@"text/json",@"text/javascript",@"text/html", @"charset=utf-8", nil]; [manager POST:URLStr parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:nil]; finish(dataDic); id obj = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil]; if ([obj isKindOfClass:[NSArray class]]||[obj isKindOfClass:[NSDictionary class]]) { //解决打印字典的时候汉子显示Unicode编码的问题 NSLog(@"%@ %@ ===== responseDictionary ==========%@",URLStr,[parameters descriptionWithLocale:parameters],[obj descriptionWithLocale:obj]); }else{ NSLog(@"%@ %@ ===== responseDictionary ==========%@",URLStr,[parameters descriptionWithLocale:parameters],obj); } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { enError(error); NSLog(@"error ===== %@", error); }]; } /** 带Token的GET请求 */ + (void)requestGETContainAuthorizationWithURLStr:(NSString *)URLStr parameters:(id)parameters token_type:(NSString *)token_type access_token:(NSString *)access_token finish:(void(^)(id dataDic))finish enError:(void(^)(NSError *error))enError { AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.requestSerializer = [AFHTTPRequestSerializer serializer]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; manager.requestSerializer.timeoutInterval = 40.f; manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData; NSString *authorization = [NSString stringWithFormat:@"%@ %@",token_type, access_token]; NSLog(@"带Token的GET请求 %@, %@, %@", token_type, access_token, authorization); [manager.requestSerializer setValue:authorization forHTTPHeaderField:@"Authorization"]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain",@"application/json",@"text/json",@"text/javascript",@"text/html", @"charset=utf-8", nil]; [manager GET:URLStr parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:nil]; // if ([[dataDic objectForKey:@"errorCode"] isEqualToString:@"0000"]) { // //请求成功 // finish(dataDic); // } //请求成功 finish(dataDic); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { enError(error); }]; } /** 带Token的POST请求 */ + (void)requestPostContainAuthorizationWithURLStr:(NSString *)URLStr parameters:(id)parameters token_type:(NSString *)token_type access_token:(NSString *)access_token finish:(void(^)(id dataDic))finish enError:(void(^)(NSError *error))enError { AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.requestSerializer = [AFHTTPRequestSerializer serializer]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; manager.requestSerializer.timeoutInterval = 40.f; manager.requestSerializer.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData; NSString *authorization = [NSString stringWithFormat:@"%@ %@",token_type, access_token]; NSLog(@"带Token的POST请求 %@, %@, %@", token_type, access_token, authorization); [manager.requestSerializer setValue:authorization forHTTPHeaderField:@"Authorization"]; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain",@"application/json",@"text/json",@"text/javascript",@"text/html", @"charset=utf-8", nil]; [manager POST:URLStr parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers | NSJSONReadingMutableLeaves error:nil]; // if ([[dataDic objectForKey:@"Code"] isEqualToString:@"200"]) { // //请求成功 // finish(dataDic); // } //请求成功 finish(dataDic); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { enError(error); }]; } @end