AFNetworking2.5的使用

来源:互联网 发布:为了抵御网络黑客攻击 编辑:程序博客网 时间:2024/05/17 20:27

注:AFNetWorking使用了ARC ,在不使用ARC项目中使用时,对AFNetWorking的所有.m文件添加“-fobjc-arc” 

  在使用ARC项目中,使用“不使用ARC”的类库时,对类库的.m文件添加“-fno-objc-arc”


1.检测网络状态

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. + (void)netWorkStatus  
  2. {  
  3.     /** 
  4.      AFNetworkReachabilityStatusUnknown          = -1,  // 未知 
  5.      AFNetworkReachabilityStatusNotReachable     = 0,   // 无连接 
  6.      AFNetworkReachabilityStatusReachableViaWWAN = 1,   // 3G 花钱 
  7.      AFNetworkReachabilityStatusReachableViaWiFi = 2,   // WiFi 
  8.      */  
  9.     // 如果要检测网络状态的变化,必须用检测管理器的单例的startMonitoring  
  10.     [[AFNetworkReachabilityManager sharedManager] startMonitoring];  
  11.       
  12.     // 检测网络连接的单例,网络变化时的回调方法  
  13.     [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {  
  14.         NSLog(@"%ld", status);  
  15.     }];  
  16. }  

2.JSON方式获取数据

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. + (void)JSONDataWithUrl:(NSString *)url success:(void (^)(id json))success fail:(void (^)())fail;  
  2. {  
  3.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
  4.       
  5.     NSDictionary *dict = @{@"format"@"json"};  
  6.     // 网络访问是异步的,回调是主线程的,因此程序员不用管在主线程更新UI的事情  
  7.     [manager GET:url parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {  
  8.         if (success) {  
  9.             success(responseObject);  
  10.         }  
  11.     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
  12.         NSLog(@"%@", error);  
  13.         if (fail) {  
  14.             fail();  
  15.         }  
  16.     }];  
  17. }  

3.xml方式获取数据

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. + (void)XMLDataWithUrl:(NSString *)urlStr success:(void (^)(id xml))success fail:(void (^)())fail  
  2. {  
  3.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
  4.       
  5.     // 返回的数据格式是XML  
  6.     manager.responseSerializer = [AFXMLParserResponseSerializer serializer];  
  7.       
  8.     NSDictionary *dict = @{@"format"@"xml"};  
  9.       
  10.     // 网络访问是异步的,回调是主线程的,因此程序员不用管在主线程更新UI的事情  
  11.     [manager GET:urlStr parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {  
  12.         if (success) {  
  13.             success(responseObject);  
  14.         }  
  15.           
  16.     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
  17.         NSLog(@"%@", error);  
  18.         if (fail) {  
  19.             fail();  
  20.         }  
  21.     }];  
  22. }  

4.post提交json数据

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. + (void)postJSONWithUrl:(NSString *)urlStr parameters:(id)parameters success:(void (^)(id responseObject))success fail:(void (^)())fail  
  2. {  
  3.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
  4.     // 设置请求格式  
  5.     manager.requestSerializer = [AFJSONRequestSerializer serializer];  
  6.     // 设置返回格式  
  7.     manager.responseSerializer = [AFHTTPResponseSerializer serializer];  
  8.     [manager POST:urlStr parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {  
  9. //        NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];  
  10.         if (success) {  
  11.             success(responseObject);  
  12.         }  
  13.     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
  14.         NSLog(@"%@", error);  
  15.         if (fail) {  
  16.             fail();  
  17.         }  
  18.     }];  
  19.       
  20. }  

5.下载文件

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. + (void)sessionDownloadWithUrl:(NSString *)urlStr success:(void (^)(NSURL *fileURL))success fail:(void (^)())fail  
  2. {  
  3.     NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];  
  4.     AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:config];  
  5.   
  6.     NSString *urlString = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  
  7.       
  8.     NSURL *url = [NSURL URLWithString:urlString];  
  9.     NSURLRequest *request = [NSURLRequest requestWithURL:url];  
  10.       
  11.     NSURLSessionDownloadTask *task = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {  
  12.         // 指定下载文件保存的路径  
  13.         //        NSLog(@"%@ %@", targetPath, response.suggestedFilename);  
  14.         // 将下载文件保存在缓存路径中  
  15.         NSString *cacheDir = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];  
  16.         NSString *path = [cacheDir stringByAppendingPathComponent:response.suggestedFilename];  
  17.           
  18.         // URLWithString返回的是网络的URL,如果使用本地URL,需要注意  
  19. //        NSURL *fileURL1 = [NSURL URLWithString:path];  
  20.         NSURL *fileURL = [NSURL fileURLWithPath:path];  
  21.           
  22. //        NSLog(@"== %@ |||| %@", fileURL1, fileURL);  
  23.         if (success) {  
  24.             success(fileURL);  
  25.         }  
  26.           
  27.         return fileURL;  
  28.     } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {  
  29.         NSLog(@"%@ %@", filePath, error);  
  30.         if (fail) {  
  31.             fail();  
  32.         }  
  33.     }];  
  34.       
  35.     [task resume];  
  36. }  

6.文件上传-自定义上传文件名

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. + (void)postUploadWithUrl:(NSString *)urlStr fileUrl:(NSURL *)fileURL fileName:(NSString *)fileName fileType:(NSString *)fileTye success:(void (^)(id responseObject))success fail:(void (^)())fail  
  2. {  
  3.     // 本地上传给服务器时,没有确定的URL,不好用MD5的方式处理  
  4.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
  5.     manager.responseSerializer = [AFHTTPResponseSerializer serializer];  
  6.     //@"http://localhost/demo/upload.php"  
  7.     [manager POST:urlStr parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {  
  8.           
  9. //        NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"头像1.png" withExtension:nil];  
  10.           
  11.         // 要上传保存在服务器中的名称  
  12.         // 使用时间来作为文件名 2014-04-30 14:20:57.png  
  13.         // 让不同的用户信息,保存在不同目录中  
  14. //        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  
  15. //        // 设置日期格式  
  16. //        formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";  
  17. //        NSString *fileName = [formatter stringFromDate:[NSDate date]];  
  18.           
  19.         //@"image/png"  
  20.         [formData appendPartWithFileURL:fileURL name:@"uploadFile" fileName:fileName mimeType:fileTye error:NULL];  
  21.           
  22.     } success:^(AFHTTPRequestOperation *operation, id responseObject) {  
  23.         if (success) {  
  24.             success(responseObject);  
  25.         }  
  26.     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
  27.         if (fail) {  
  28.             fail();  
  29.         }  
  30.     }];  
  31. }  

7.文件上传-随机生成文件名

[objc] view plaincopy在CODE上查看代码片派生到我的代码片
  1. + (void)postUploadWithUrl:(NSString *)urlStr fileUrl:(NSURL *)fileURL success:(void (^)(id responseObject))success fail:(void (^)())fail  
  2. {  
  3.     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];  
  4.     // AFHTTPResponseSerializer就是正常的HTTP请求响应结果:NSData  
  5.     // 当请求的返回数据不是JSON,XML,PList,UIImage之外,使用AFHTTPResponseSerializer  
  6.     // 例如返回一个html,text...  
  7.     //  
  8.     // 实际上就是AFN没有对响应数据做任何处理的情况  
  9.     manager.responseSerializer = [AFHTTPResponseSerializer serializer];  
  10.       
  11.     // formData是遵守了AFMultipartFormData的对象  
  12.     [manager POST:urlStr parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {  
  13.           
  14.         // 将本地的文件上传至服务器  
  15. //        NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"头像1.png" withExtension:nil];  
  16.           
  17.         [formData appendPartWithFileURL:fileURL name:@"uploadFile" error:NULL];  
  18.     } success:^(AFHTTPRequestOperation *operation, id responseObject) {  
  19. //        NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];  
  20. //          
  21. //        NSLog(@"完成 %@", result);  
  22.         if (success) {  
  23.             success(responseObject);  
  24.         }  
  25.     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {  
  26.         NSLog(@"错误 %@", error.localizedDescription);  
  27.         if (fail) {  
  28.             fail();  
  29.         }  
  30.     }];  
  31. }  


Demo下载地址:AFNetworkingDemo


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 交易关闭钱扣了怎么办 交易猫账号绑定支付宝打不开怎么办 拼多多涉假处罚怎么办 淘宝店铺重复铺货扣6分怎么办 帆布鞋子买大了怎么办 开淘宝店没销量怎么办 开淘宝店没有销量怎么办 淘宝买东西支付密码错了怎么办 淘宝登入密码忘记了怎么办 逛街时手机没电了怎么办 逛街手机没有电了怎么办 卖家拒收退回来怎么办 群英会奖池钱不够买超了怎么办 三星s8卡顿严重怎么办 三星s8变卡了怎么办 新开店铺没有人怎么办 电视显示没有usb设备怎么办 华为平板电脑触摸屏没反应怎么办 平板电脑液晶显示屏坏了怎么办 6p的home键失灵怎么办 读书郎屏幕坏了怎么办 苹果平板激活锁忘了怎么办 平板电脑充电插口坏了怎么办? 电视频幕花了怎么办 苹果笔记本电脑硬盘坏了怎么办 mac屏幕压坏了怎么办 新电脑连不上网怎么办 新买电脑后悔了怎么办 装显卡后玩游戏黑屏怎么办 顺丰寄主机坏了怎么办 征信账户忘记了怎么办 疑似qq和疑似应用宝怎么办 荣大3608速印机卸版故障怎么办 配的近视眼镜看不清电脑屏幕怎么办 cad命令反应很慢怎么办 淘宝美工面试让作图怎么办 笔记本玩cf闪退怎么办 台式电脑玩lol卡怎么办 配置充足玩lol卡怎么办 电脑买贵了应该怎么办 微信红包收不了钱怎么办