123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- //
- // 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<AFMultipartFormData> _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
|