AFNetworking3.1 基本使用

来源:互联网 发布:2017大数据标准化论坛 编辑:程序博客网 时间:2024/06/08 18:29
  1. #import "HttpsManager.h"  
  2.   
  3. @implementation HttpsManager  
  4. #pragma mark - 创建请求者  
  5. +(AFHTTPSessionManager *)manager  
  6. {  
  7.     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  
  8.     // 超时时间  
  9.     manager.requestSerializer.timeoutInterval = kTimeOutInterval;  
  10.       
  11.     // 声明上传的是json格式的参数,需要你和后台约定好,不然会出现后台无法获取到你上传的参数问题  
  12.     manager.requestSerializer = [AFHTTPRequestSerializer serializer]; // 上传普通格式  
  13.     //    manager.requestSerializer = [AFJSONRequestSerializer serializer]; // 上传JSON格式  
  14.       
  15.     // 声明获取到的数据格式  
  16.     manager.responseSerializer = [AFHTTPResponseSerializer serializer]; // AFN不会解析,数据是data,需要自己解析  
  17.     //    manager.responseSerializer = [AFJSONResponseSerializer serializer]; // AFN会JSON解析返回的数据  
  18.     // 个人建议还是自己解析的比较好,有时接口返回的数据不合格会报3840错误,大致是AFN无法解析返回来的数据  
  19.     return manager;  
  20. }  
  21.   
  22. + (void)getUserCarShopAndSalesDataForSalesWithUserId:(NSString *)userId date:(NSString *)date selectAreaType:(NSString *)areaType Success:(SuccessBlock)success fail:(AFNErrorBlock)fail  
  23. {  
  24.     // get请求也可以直接将参数放在字典里,AFN会自己讲参数拼接在url的后面,不需要自己凭借  
  25.     NSDictionary *param = @{@"user_id":userId, @"sale_date":date, @"accessToken":@"e9c0e60318ebd07ec2fe"@"area_type":areaType};  
  26.     // 创建请求类  
  27.     AFHTTPSessionManager *manager = [self manager];  
  28.     [manager GET:@"http://pm.yunhan-china.com/index.php/Api_sale/sales_get" parameters:param progress:^(NSProgress * _Nonnull downloadProgress) {  
  29.         // 这里可以获取到目前数据请求的进度  
  30.     } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {  
  31.         // 请求成功  
  32.         if(responseObject){  
  33.             NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];  
  34.             success(dict,YES);  
  35.         } else {  
  36.             success(@{@"msg":@"暂无数据"}, NO);  
  37.         }  
  38.     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {  
  39.         // 请求失败  
  40.         fail(error);  
  41.     }];  
  42. }  
  43.   
  44. + (void)loginWithUserAccount:(NSString *)account password:(NSString *)password success:(SuccessBlock)success fail:(AFNErrorBlock)fail  
  45. {  
  46.     // 将请求参数放在请求的字典里  
  47.     NSDictionary *param = @{@"phoneNumber":account, @"password":@"f379eaf3c831b04de153469d1bec345e"};  
  48.     // 创建请求类  
  49.     AFHTTPSessionManager *manager = [self manager];  
  50.     [manager POST:@"http://pm.yunhan-china.com/index.php/api_common/login"  
  51.        parameters:param  
  52.          progress:^(NSProgress * _Nonnull uploadProgress) {  
  53.         // 这里可以获取到目前数据请求的进度  
  54.     } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {  
  55.         // 请求成功  
  56.         if(responseObject){  
  57.             NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];  
  58.             success(dict,YES);  
  59.         } else {  
  60.             success(@{@"msg":@"暂无数据"}, NO);  
  61.         }  
  62.     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {  
  63.         // 请求失败  
  64.         fail(error);  
  65.     }];  
  66.       
  67. }  
  68.   
  69. - (void)downLoadWithUrlString:(NSString *)urlString  
  70. {  
  71.     // 1.创建管理者对象  
  72.     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  
  73.     // 2.设置请求的URL地址  
  74.     NSURL *url = [NSURL URLWithString:urlString];  
  75.     // 3.创建请求对象  
  76.     NSURLRequest *request = [NSURLRequest requestWithURL:url];  
  77.     // 4.下载任务  
  78.     NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {  
  79.         // 下载进度  
  80.         NSLog(@"当前下载进度为:%lf"1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount);  
  81.     } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {  
  82.         // 下载地址  
  83.         NSLog(@"默认下载地址%@",targetPath);  
  84.         // 设置下载路径,通过沙盒获取缓存地址,最后返回NSURL对象  
  85.         NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];  
  86.         return [NSURL fileURLWithPath:filePath]; // 返回的是文件存放在本地沙盒的地址  
  87.     } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {  
  88.         // 下载完成调用的方法  
  89.         NSLog(@"%@---%@", response, filePath);  
  90.     }];  
  91.     // 5.启动下载任务  
  92.     [task resume];  
  93. }  
  94.   
  95. - (void)uploadWithUser:(NSString *)userId UrlString:(NSString *)urlString upImg:(UIImage *)upImg  
  96. {  
  97.     // 创建管理者对象  
  98.     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  
  99.     // 参数  
  100.     NSDictionary *param = @{@"user_id":userId};  
  101.     [manager POST:urlString parameters:param constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {  
  102.         /******** 1.上传已经获取到的img *******/  
  103.         // 把图片转换成data  
  104.         NSData *data = UIImagePNGRepresentation(upImg);  
  105.         // 拼接数据到请求题中  
  106.         [formData appendPartWithFileData:data name:@"file" fileName:@"123.png" mimeType:@"image/png"];  
  107.         /******** 2.通过路径上传沙盒或系统相册里的图片 *****/  
  108.         //        [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"文件地址"] name:@"file" fileName:@"1234.png" mimeType:@"application/octet-stream" error:nil];  
  109.           
  110.     } progress:^(NSProgress * _Nonnull uploadProgress) {  
  111.         // 打印上传进度  
  112.         NSLog(@"%lf",1.0 *uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);  
  113.     } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {  
  114.         //请求成功  
  115.         NSLog(@"请求成功:%@",responseObject);  
  116.           
  117.     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {  
  118.         //请求失败  
  119.         NSLog(@"请求失败:%@",error);  
  120.     }];  
  121. }  
  122.   
  123. - (void)AFNetworkStatus{  
  124.       
  125.     //1.创建网络监测者  
  126.     AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];  
  127.       
  128.     /*枚举里面四个状态  分别对应 未知 无网络 数据 WiFi 
  129.      typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) { 
  130.      AFNetworkReachabilityStatusUnknown          = -1,      未知 
  131.      AFNetworkReachabilityStatusNotReachable     = 0,       无网络 
  132.      AFNetworkReachabilityStatusReachableViaWWAN = 1,       蜂窝数据网络 
  133.      AFNetworkReachabilityStatusReachableViaWiFi = 2,       WiFi 
  134.      }; 
  135.      */  
  136.       
  137.     [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {  
  138.         //这里是监测到网络改变的block  可以写成switch方便  
  139.         //在里面可以随便写事件  
  140.         switch (status) {  
  141.             case AFNetworkReachabilityStatusUnknown:  
  142.                 NSLog(@"未知网络状态");  
  143.                 break;  
  144.             case AFNetworkReachabilityStatusNotReachable:  
  145.                 NSLog(@"无网络");  
  146.                 break;  
  147.                   
  148.             case AFNetworkReachabilityStatusReachableViaWWAN:  
  149.                 NSLog(@"蜂窝数据网");  
  150.                 break;  
  151.                   
  152.             case AFNetworkReachabilityStatusReachableViaWiFi:  
  153.                 NSLog(@"WiFi网络");  
  154.                   
  155.                 break;  
  156.                   
  157.             default:  
  158.                 break;  
  159.         }  
  160.           
  161.     }] ;  
  162. }  
  163.   
  164.   
  165. @end  
from:  http://blog.csdn.net/heberan/article/details/51549543
1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 股票开户不用了怎么办 高中生玩游戏父母怎么办 高中生爱玩游戏怎么办 宝贝发烧不退烧怎么办 孩子行笔速度慢怎么办 孩子不会读英语怎么办 太注意小孩考试成绩怎么办 二年级成绩很差怎么办 班级差生应该怎么办 班级差生太多怎么办 初三孩子英语差怎么办 初三英语基础差怎么办 学生学习效率低怎么办 摔伤后皮下血肿怎么办 孩子学习效率低怎么办 很多作业没写完怎么办? 小学孩子成绩差怎么办 孩子脚上起水泡怎么办 小学一年级体育课哑铃怎么办 托福成绩失效后怎么办 去外国旅游不适应怎么办 一年级语文成绩差怎么办 一年级小孩成绩差怎么办 一年级小孩基础差怎么办 一年级小孩语文差怎么办 一年级小孩数学差怎么办 一年级小孩理解能力差怎么办 一年级小孩作文差怎么办 一年级小孩记忆力差怎么办 孩子的记忆力不好怎么办 孩子记忆力不好怎么办呢 小学三年级学生不听话怎么办 司法考试成绩单没打印怎么办 高一200分怎么办 初一孩子语文差怎么办 大学专业没选好怎么办 减肥口渴的厉害怎么办 开胸手术后胸闷气短怎么办 打游戏上网成瘾怎么办 老公打游戏成瘾怎么办 我老是沉迷游戏怎么办