// // JZHttp.m // JIZHANG // // Created by kuxuan on 2017/10/19. // Copyright © 2017年 kuxuan. All rights reserved. // #import "JZHttp.h" @implementation JZHttp + (void)post:(NSString *)url params:(id)params success:(void(^)(id json))success failure:(void(^)(NSError *error))failure { // 1.创建请求管理者 AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager]; mgr.requestSerializer = [AFHTTPRequestSerializer serializer]; // 解析为data mgr.responseSerializer=[AFHTTPResponseSerializer serializer]; mgr.responseSerializer.acceptableContentTypes =[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",nil]; // mgr.responseSerializer.acceptableContentTypes =[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",nil]; // [mgr.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; mgr.requestSerializer.timeoutInterval = 15; NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"]; [mgr.requestSerializer setValue:app_Version forHTTPHeaderField:@"version"]; [mgr.requestSerializer setValue:JZCHANNEL_ID forHTTPHeaderField:@"cid"]; NSString *token = [[NSUserDefaults standardUserDefaults]objectForKey:JZTOKEN]; if (token.length>0) { [mgr.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@",token] forHTTPHeaderField:@"Authorization"]; [mgr.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; } // 2.发送请求 [mgr POST:url parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { id responseDict =[NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; if ([responseDict[@"code"] isEqual:@0]) { if (!responseDict[@"data"]) { success(@{}); }else{ success(responseDict[@"data"]); } }else{ NSArray *errorArray = responseDict[@"error"]; if (errorArray.count>0) { NSString *message = errorArray[0]; [MBProgressHUD showTip:message]; return ; } // [MBProgressHUD showTip:responseDict[@"error"]]; } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { // NSData * data = error.userInfo[@"com.alamofire.serialization.response.error.data"]; // NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; // NSLog(@"服务器的错误原因:%@",str); if ([error.userInfo[AFNetworkingOperationFailingURLResponseErrorKey] statusCode] == 401) { [MBProgressHUD showTip:@"您已在另一款设备登录,请重新登录"]; // 清除用户缓存数据及token [[JZLoginManager shareInstance] clearInfomation]; } if (failure) { failure(error); } }]; } + (void)get:(NSString *)url params:(NSDictionary *)params success:(void (^)(id))success failure:(void (^)(NSError *))failure { AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager]; mgr.requestSerializer.timeoutInterval = 15; mgr.requestSerializer = [AFHTTPRequestSerializer serializer]; // 解析为data mgr.responseSerializer=[AFHTTPResponseSerializer serializer]; mgr.responseSerializer.acceptableContentTypes =[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html",nil]; NSUserDefaults *userdefault = [NSUserDefaults standardUserDefaults]; NSString *token = [userdefault stringForKey:JZTOKEN]; [mgr.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@",token] forHTTPHeaderField:@"Authorization"]; [mgr.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"]; [mgr.requestSerializer setValue:app_Version forHTTPHeaderField:@"version"]; [mgr.requestSerializer setValue:JZCHANNEL_ID forHTTPHeaderField:@"cid"]; // 2.发送请求 [mgr GET:url parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { id responseDict =[NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; if ([responseDict[@"code"] isEqual:@0]) { if (!responseDict[@"data"]) { success(@{}); }else{ success(responseDict[@"data"]); } }else{ NSArray *errorArray = responseDict[@"error"]; NSString *message = errorArray[0]; if (message.length) { UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"温馨提示" message:message preferredStyle:UIAlertControllerStyleAlert]; [alertController addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { }]]; [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alertController animated:YES completion:nil]; } } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { if (failure) { // NSData * data = error.userInfo[@"com.alamofire.serialization.response.error.data"]; // NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; // NSLog(@"服务器的错误原因:%@",str); failure(error); } }]; } + (void)uploadImageWithUrl:(NSString *)url para:(NSDictionary *)para name:(NSString *)name imageData:(NSData *)data imageName:(NSString *)imageName success:(void(^)(id json))success failure:(void(^)(NSError *error))failure{ //2. 利用时间戳当做图片名字 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyyMMddHHmmss"; NSString *dateString = [formatter stringFromDate:[NSDate date]]; NSString *fileName = [NSString stringWithFormat:@"%@%@.jpg",dateString,imageName]; //3. 图片二进制文件 NSLog(@"upload image size: %ld k", (long)(data.length / 1024)); AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.responseSerializer.acceptableContentTypes =[NSSet setWithObjects:@"application/json",@"text/html",@"image/jpeg",@"image/png",@"application/octet-stream",@"text/javascript",@"text/json",nil]; manager.requestSerializer= [AFHTTPRequestSerializer serializer]; manager.responseSerializer= [AFHTTPResponseSerializer serializer]; NSUserDefaults *userdefault = [NSUserDefaults standardUserDefaults]; NSString *token = [userdefault stringForKey:JZTOKEN]; [manager.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@",token] forHTTPHeaderField:@"Authorization"]; NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"]; [manager.requestSerializer setValue:app_Version forHTTPHeaderField:@"version"]; [manager.requestSerializer setValue:JZCHANNEL_ID forHTTPHeaderField:@"cid"]; [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"]; [manager POST:url parameters:para constructingBodyWithBlock:^(id _Nonnull formData) { //上传的参数(上传图片,以文件流的格式) if (data.length != 0) { [formData appendPartWithFileData:data name:name fileName:fileName mimeType:@"image/png"]; } } progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { id responseDict =[NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; success(responseDict); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { // NSData * data = error.userInfo[@"com.alamofire.serialization.response.error.data"]; // NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; // NSLog(@"服务器的错误原因:%@",str); if (failure) { failure(error); } }]; } @end