// // GiGaNetManager.m // GIGA // // Created by lianxiang on 2018/8/15. // Copyright © 2018年 com.giga.ios. All rights reserved. // #import "GiGaNetManager.h" #import "AFNetworking.h" #import "GiGaServerConfig.h" #import "GiGaUserDefault.h" #import "GIGaUserFileHelper.h" @interface GiGaNetManager() @end @implementation GiGaNetManager + (void)requestMethod:(RequestMethod)requestMethod Url:(NSString *)url params:(NSDictionary *)params responseBlock:(responseBlock)block{ // NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; // NSURL *baseUrl = [NSURL URLWithString:[GiGaServerConfig getMainUrl]]; // AFHTTPSessionManager*manager=[[AFHTTPSessionManager alloc] initWithBaseURL:baseUrl sessionConfiguration:configuration]; AFHTTPSessionManager*manager=[[AFHTTPSessionManager alloc] init]; manager.responseSerializer=[AFHTTPResponseSerializer serializer]; NSString *token = [GiGaUserDefault getCurentToken]; if (token) { [manager.requestSerializer setValue:token forHTTPHeaderField:@"token"]; } [manager.requestSerializer setValue:@"ios" forHTTPHeaderField:@"device"]; switch (requestMethod) { case RequestGetMethod: { [manager GET:url parameters:params progress:^(NSProgress * _Nonnull downloadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { if (responseObject) { NSLog(@"%@", responseObject); NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil]; NSDictionary *headerFields = [(NSHTTPURLResponse *)task.response allHeaderFields]; block(dict, headerFields, nil); } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSDictionary *headerFields = [(NSHTTPURLResponse *)task.response allHeaderFields]; block(nil, headerFields, error); }]; } break; case RequestPostMethod: { [manager POST:url parameters:params progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { if (responseObject) { NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil]; NSLog(@"%@", dict); NSDictionary *headerFields = [(NSHTTPURLResponse *)task.response allHeaderFields]; block(dict, headerFields, nil); } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSDictionary *headerFields = [(NSHTTPURLResponse *)task.response allHeaderFields]; block(nil, headerFields, error); }]; } break; default: break; } } +(void)request:(NSString *)url params:(NSDictionary *)param success:(void (^)(id response))success failure:(void (^)(NSError *err))failure { AFHTTPSessionManager*manager=[[AFHTTPSessionManager alloc] init]; manager.responseSerializer=[AFHTTPResponseSerializer serializer]; [manager.requestSerializer setValue:@"ios" forHTTPHeaderField:@"device"]; [manager POST:url parameters:param progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { if (responseObject) { NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil]; NSLog(@"%@", dict); if (success) { success(responseObject); } } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"%@",error); if (failure) { failure(error); } }]; } //body传参数 +(void)userbodyRequest:(NSString *)url params:(NSDictionary *)param completionHandler:(nullable void (^)(NSURLResponse *response,NSDictionary *resDic, NSError * _Nullable error))completionHandler { //NSString *jsonStr = [GiGaHelper dictionaryToJson:param]; NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURL *baseUrl = [NSURL URLWithString:[GiGaServerConfig getMainUrl]]; AFHTTPSessionManager*manager=[[AFHTTPSessionManager alloc] initWithBaseURL:baseUrl sessionConfiguration:configuration]; manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone]; manager.requestSerializer = [AFHTTPRequestSerializer serializer]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; [manager.responseSerializer setAcceptableContentTypes:[NSSet setWithObjects:@"application/json",@"text/json", @"text/javascript",@"text/html",@"text/plain",nil]]; NSString *token = [GiGaUserDefault getCurentToken]; NSMutableURLRequest *requst = [[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:url parameters:nil error:nil]; requst.timeoutInterval = 20.f; if (token) { [manager.requestSerializer setValue:token forHTTPHeaderField:@"token"]; [requst setValue:token forHTTPHeaderField:@"token"]; } [manager.requestSerializer setValue:@"ios" forHTTPHeaderField:@"device"]; [requst setValue:@"ios" forHTTPHeaderField:@"device"]; [requst setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [requst setValue:@"application/json" forHTTPHeaderField:@"Accept"]; if (param && param.count > 0){ NSError *parseError =nil; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:param options:NSJSONWritingPrettyPrinted error:&parseError]; // NSData *jsonData = [jsonStr dataUsingEncoding:NSUTF8StringEncoding]; [requst setHTTPBody:jsonData]; } NSURLSessionDataTask *task = [manager dataTaskWithRequest:requst uploadProgress:^(NSProgress * _Nonnull uploadProgress) { } downloadProgress:^(NSProgress * _Nonnull downloadProgress) { } completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { if (responseObject) { NSDictionary *responseDic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; if (completionHandler) { completionHandler(response,responseDic,error); } }else{ if (completionHandler) { completionHandler(nil,nil,error); } } }]; [task resume]; } //上传1张 +(void)uploadImage:(NSString *)url imgData:(NSData *)imgData parms:(NSDictionary *)parms responseBlock:(responseBlock)block{ AFHTTPSessionManager*manager=[[AFHTTPSessionManager alloc] init]; manager.responseSerializer=[AFHTTPResponseSerializer serializer]; NSString *token = [GiGaUserDefault getCurentToken]; if (token) { [manager.requestSerializer setValue:token forHTTPHeaderField:@"token"]; } [manager.requestSerializer setValue:@"ios" forHTTPHeaderField:@"device"]; [manager POST:url parameters:parms constructingBodyWithBlock:^(id _Nonnull formData) { //上传时使用当前的系统事件作为文件名 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyyMMddHHmmss"; NSString *str = [formatter stringFromDate:[NSDate date]]; NSString *fileName = [NSString stringWithFormat:@"%@.jpg", str]; //服务器上传文件的字段和类型 [formData appendPartWithFileData:imgData name:@"file" fileName:fileName mimeType:@"image/jpeg"]; NSString *userId = [GiGaUserDefault getCurentUserId]; if (!userId) { userId = @"avator123"; } [formData appendPartWithFormData:imgData name:userId]; } progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { if (responseObject) { NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil]; NSLog(@"%@", dict); NSDictionary *headerFields = [(NSHTTPURLResponse *)task.response allHeaderFields]; if (block) { block(dict, headerFields, nil); } } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSDictionary *headerFields = [(NSHTTPURLResponse *)task.response allHeaderFields]; if (block) { block(nil, headerFields, error); } }]; } //上传多张 +(void)uploadImage:(NSString *)url imageNames:(NSArray *)imageNames parms:(NSDictionary *)parms responseBlock:(responseBlock)block { AFHTTPSessionManager*manager=[[AFHTTPSessionManager alloc] init]; manager.responseSerializer=[AFHTTPResponseSerializer serializer]; NSString *token = [GiGaUserDefault getCurentToken]; if (token) { [manager.requestSerializer setValue:token forHTTPHeaderField:@"token"]; } [manager.requestSerializer setValue:@"ios" forHTTPHeaderField:@"device"]; NSString *fullurl = [NSString stringWithFormat:@"%@%@",[GiGaServerConfig getMainUrl],url]; [manager POST:fullurl parameters:parms constructingBodyWithBlock:^(id _Nonnull formData) { for (NSUInteger i= 0; i < imageNames.count; i ++) { NSString *fileName = [NSString stringWithFormat:@"%@.png", imageNames[i]]; //服务器上传文件的字段和类型 UIImage *image =[GIGaUserFileHelper getUserFeedbackImag:imageNames[i]] ; NSData *imgData = UIImagePNGRepresentation(image); [formData appendPartWithFileData:imgData name:@"file" fileName:fileName mimeType:@"image/png"]; [formData appendPartWithFormData:imgData name:fileName]; } } progress:^(NSProgress * _Nonnull uploadProgress) { } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil]; NSLog(@"%@", dict); NSDictionary *headerFields = [(NSHTTPURLResponse *)task.response allHeaderFields]; if (block) { block(dict, headerFields, nil); } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSDictionary *headerFields = [(NSHTTPURLResponse *)task.response allHeaderFields]; if (block) { block(nil, headerFields, error); } }]; } @end