AFN老版本和新版本的分别使用

1:新版本的使用方法



  • #import "HttpsManager.h"  
  •   
  • @implementation HttpsManager  
  • #pragma mark - 创建请求者  
  • +(AFHTTPSessionManager *)manager  
  • {  
  •     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  
  •     // 超时时间  
  •     manager.requestSerializer.timeoutInterval = kTimeOutInterval;  
  •       
  •     // 声明上传的是json格式的参数,需要你和后台约定好,不然会出现后台无法获取到你上传的参数问题  
  •     manager.requestSerializer = [AFHTTPRequestSerializer serializer]; // 上传普通格式  
  •     //    manager.requestSerializer = [AFJSONRequestSerializer serializer]; // 上传JSON格式  
  •       
  •     // 声明获取到的数据格式  
  •     manager.responseSerializer = [AFHTTPResponseSerializer serializer]; // AFN不会解析,数据是data,需要自己解析  
  •     //    manager.responseSerializer = [AFJSONResponseSerializer serializer]; // AFN会JSON解析返回的数据  
  •     // 个人建议还是自己解析的比较好,有时接口返回的数据不合格会报3840错误,大致是AFN无法解析返回来的数据  
  •     return manager;  
  • }  
  •   
  • + (void)getUserCarShopAndSalesDataForSalesWithUserId:(NSString *)userId date:(NSString *)date selectAreaType:(NSString *)areaType Success:(SuccessBlock)success fail:(AFNErrorBlock)fail  
  • {  
  •     // get请求也可以直接将参数放在字典里,AFN会自己讲参数拼接在url的后面,不需要自己凭借  
  •     NSDictionary *param = @{@"user_id":userId, @"sale_date":date, @"accessToken":@"e9c0e60318ebd07ec2fe"@"area_type":areaType};  
  •     // 创建请求类  
  •     AFHTTPSessionManager *manager = [self manager];  
  •     [manager GET:@"http://pm.yunhan-china.com/index.php/Api_sale/sales_get" parameters:param progress:^(NSProgress * _Nonnull downloadProgress) {  
  •         // 这里可以获取到目前数据请求的进度  
  •     } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {  
  •         // 请求成功  
  •         if(responseObject){  
  •             NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];  
  •             success(dict,YES);  
  •         } else {  
  •             success(@{@"msg":@"暂无数据"}, NO);  
  •         }  
  •     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {  
  •         // 请求失败  
  •         fail(error);  
  •     }];  
  • }  
  •   
  • + (void)loginWithUserAccount:(NSString *)account password:(NSString *)password success:(SuccessBlock)success fail:(AFNErrorBlock)fail  
  • {  
  •     // 将请求参数放在请求的字典里  
  •     NSDictionary *param = @{@"phoneNumber":account, @"password":@"f379eaf3c831b04de153469d1bec345e"};  
  •     // 创建请求类  
  •     AFHTTPSessionManager *manager = [self manager];  
  •     [manager POST:@"http://pm.yunhan-china.com/index.php/api_common/login"  
  •        parameters:param  
  •          progress:^(NSProgress * _Nonnull uploadProgress) {  
  •         // 这里可以获取到目前数据请求的进度  
  •     } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {  
  •         // 请求成功  
  •         if(responseObject){  
  •             NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];  
  •             success(dict,YES);  
  •         } else {  
  •             success(@{@"msg":@"暂无数据"}, NO);  
  •         }  
  •     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {  
  •         // 请求失败  
  •         fail(error);  
  •     }];  
  •       
  • }  
  •   
  • - (void)downLoadWithUrlString:(NSString *)urlString  
  • {  
  •     // 1.创建管理者对象  
  •     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  
  •     // 2.设置请求的URL地址  
  •     NSURL *url = [NSURL URLWithString:urlString];  
  •     // 3.创建请求对象  
  •     NSURLRequest *request = [NSURLRequest requestWithURL:url];  
  •     // 4.下载任务  
  •     NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {  
  •         // 下载进度  
  •         NSLog(@"当前下载进度为:%lf"1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount);  
  •     } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {  
  •         // 下载地址  
  •         NSLog(@"默认下载地址%@",targetPath);  
  •         // 设置下载路径,通过沙盒获取缓存地址,最后返回NSURL对象  
  •         NSString *filePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];  
  •         return [NSURL fileURLWithPath:filePath]; // 返回的是文件存放在本地沙盒的地址  
  •     } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {  
  •         // 下载完成调用的方法  
  •         NSLog(@"%@---%@", response, filePath);  
  •     }];  
  •     // 5.启动下载任务  
  •     [task resume];  
  • }  
  •   
  • - (void)uploadWithUser:(NSString *)userId UrlString:(NSString *)urlString upImg:(UIImage *)upImg  
  • {  
  •     // 创建管理者对象  
  •     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];  
  •     // 参数  
  •     NSDictionary *param = @{@"user_id":userId};  
  •     [manager POST:urlString parameters:param constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {  
  •         /******** 1.上传已经获取到的img *******/  
  •         // 把图片转换成data  
  •         NSData *data = UIImagePNGRepresentation(upImg);  
  •         // 拼接数据到请求题中  
  •         [formData appendPartWithFileData:data name:@"file" fileName:@"123.png" mimeType:@"image/png"];  
  •         /******** 2.通过路径上传沙盒或系统相册里的图片 *****/  
  •         //        [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"文件地址"] name:@"file" fileName:@"1234.png" mimeType:@"application/octet-stream" error:nil];  
  •           
  •     } progress:^(NSProgress * _Nonnull uploadProgress) {  
  •         // 打印上传进度  
  •         NSLog(@"%lf",1.0 *uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);  
  •     } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {  
  •         //请求成功  
  •         NSLog(@"请求成功:%@",responseObject);  
  •           
  •     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {  
  •         //请求失败  
  •         NSLog(@"请求失败:%@",error);  
  •     }];  
  • }  
  •   
  • - (void)AFNetworkStatus{  
  •       
  •     //1.创建网络监测者  
  •     AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];  
  •       
  •     /*枚举里面四个状态  分别对应 未知 无网络 数据 WiFi 
  •      typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) { 
  •      AFNetworkReachabilityStatusUnknown          = -1,      未知 
  •      AFNetworkReachabilityStatusNotReachable     = 0,       无网络 
  •      AFNetworkReachabilityStatusReachableViaWWAN = 1,       蜂窝数据网络 
  •      AFNetworkReachabilityStatusReachableViaWiFi = 2,       WiFi 
  •      }; 
  •      */  
  •       
  •     [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {  
  •         //这里是监测到网络改变的block  可以写成switch方便  
  •         //在里面可以随便写事件  
  •         switch (status) {  
  •             case AFNetworkReachabilityStatusUnknown:  
  •                 NSLog(@"未知网络状态");  
  •                 break;  
  •             case AFNetworkReachabilityStatusNotReachable:  
  •                 NSLog(@"无网络");  
  •                 break;  
  •                   
  •             case AFNetworkReachabilityStatusReachableViaWWAN:  
  •                 NSLog(@"蜂窝数据网");  
  •                 break;  
  •                   
  •             case AFNetworkReachabilityStatusReachableViaWiFi:  
  •                 NSLog(@"WiFi网络");  
  •                   
  •                 break;  
  •                   
  •             default:  
  •                 break;  
  •         }  
  •           
  •     }] ;  
  • }  
  •   
  •   
  • @end 
  • 2:老版本的使用方法

  • +(void)GET:(NSString *)urlString parameters:(NSDictionary *)params success:(void(^)(id responseObject))success failure:(void(^)(NSError *error))failure{

       // [[LBBAFNetTool shareManager] deteteHttpCookie];

      // [[LBBAFNetTool shareManager] setCookieRequest];

        AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

        manager.responseSerializer = [AFHTTPResponseSerializer serializer];

        [manager.requestSerializer setHTTPShouldHandleCookies:YES];

        [[LBBAFNetTool shareManager] setCookieRequest];

        [manager GET:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {

            

            if(success){

                   success(responseObject);

            }

            //如果任务字典中有,下载完后,就移除任务

            if([[LBBAFNetTool shareManager]isHaveRequestTestForKey:urlString])

            {

                [[LBBAFNetTool shareManager]removeTestForKey:urlString];

            }

            

            

        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {

            if(failure){

            failure(error);

            }

            //如果任务字典中有,下载完后,就移除任务

            if([[LBBAFNetTool shareManager]isHaveRequestTestForKey:urlString]){

                [[LBBAFNetTool shareManager]removeTestForKey:urlString];

            }


            

        }];

        

        



        //如果任务字典中没有,则加入

        if(![[LBBAFNetTool shareManager] isHaveRequestTestForKey:urlString]){

            

            [[LBBAFNetTool shareManager]addTestObj:manager ForKey:urlString];

            

        }

        

        

        

    }



    +(void)POST:(NSString *)urlString parameters:(NSDictionary *)params success:(void(^)(id responseObject))success failure:(void(^)(NSError *error))failure{

        AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

        manager.responseSerializer = [AFHTTPResponseSerializer serializer];

        [manager.requestSerializer setHTTPShouldHandleCookies:YES];

         [[LBBAFNetTool shareManager] setCookieRequest];

        [manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {

            if(success){

                

            success(responseObject);

                NSLog(@"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值