AFNetworking3.1 基本使用

  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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值