首页 > 学院 > 开发设计 > 正文

AFNetworking简单应用

2019-11-14 17:59:47
字体:
来源:转载
供稿:网友

最近最学习 AFNetworking ,根据自己所学对 AFNetWorking 一些简单应用做了一下简单封装,主要有 get,post形式获取 xml,json,get 方式获取图片,下载文件,上传文件,代码如下:

 1 // 2 //  AFNetWorking_Demo.h 3 //  AFNetWorking_Demo 4 // 5 //  Created by Ager on 15/11/4. 6 //  Copyright © 2015年 Ager. All rights reserved. 7 // 8  9 #import <Foundation/Foundation.h>10 11 @interface AFNetWorking_Demo : NSObject12 13 14 /**15  *  get 方法请求 xml16  *  block success 参数类型 NSXMLParser17  */18 + (void)requestXML_GET:(NSString*)strUrl success:(void(^)(id XMLParser))success fail:(void(^)(id error))fail;19 20 /**21  *  post 方法请求 xml22  *  block success 参数类型 NSXMLParser23  */24 + (void)requestXML_POST:(NSString*)strUrl parameters:(NSString*)parameters success:(void(^)(id XMLParser))success fail:(void(^)(id error))fail;25 26 /**27  *  get 方法请求 JSON28  *  block success 参数类型为解析好的 JSON 数据 , 字典或数组29  */30 + (void)requestJSON_GET:(NSString*)strUrl success:(void(^)(id json))success fail:(void(^)(id error))fail;31 32 /**33 *  post 方法请求 JSON34 *  block success 参数类型为解析好的 JSON 数据 , 字典或数组 35 */36 + (void)requestJSON_POST:(NSString*)strUrl parameters:(NSDictionary*)parameters success:(void(^)(id json))success fail:(void(^)(id error))fail;37 38 39 /**40  *  get 方法请求 img41  */42 + (void)requestIMG_GET:(NSString*)strUrl success:(void(^)(id image))success fail:(void(^)(id error))fail;43 44 /**45  *  下载文件46  *47  *  @param urlStr  要下载文件的路径48  */49 + (void)sessionDownloadWithUrl:(NSString *)urlStr success:(void (^)(NSURL *fileURL))success fail:(void (^)())fail;50 51 /**52  *  上传文件53  *54  *  @param urlStr   上传网址地址55  *  @param filePath 要上传的文件沙盒路径56  */57 + (void)upLoad:(NSString*)urlStr filePath:(NSString *)filePath success:(void(^)(id responSEObject))success fail:(void(^)())fail;58 59 @end
AFNetWorking_Demo.h
  1 //  2 //  AFNetWorking_Demo.m  3 //  AFNetWorking_Demo  4 //  5 //  Created by Ager on 15/11/4.  6 //  Copyright © 2015年 Ager. All rights reserved.  7 //  8   9 #import "AFNetWorking_Demo.h" 10 #import "AFNetworking.h" 11  12 @implementation AFNetWorking_Demo 13  14  15 /** 16  *  get 方法请求 xml 17  */ 18 + (void)requestXML_GET:(NSString*)strUrl success:(void(^)(id XMLParser))success fail:(void(^)(id error))fail{ 19      20     AFHTTPRequestOperationManager *mamager = [AFHTTPRequestOperationManager manager]; 21      22     mamager.responseSerializer = [[AFXMLParserResponseSerializer alloc]init]; 23      24     [mamager GET:strUrl parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { 25          26         success(responseObject); 27          28     } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 29          30         fail(error); 31          32     }]; 33      34 } 35  36  37  38 /** 39  *  post 方法请求 xml 40  * 41  * parameters 为 JSON 数据类型 42  */ 43 + (void)requestXML_POST:(NSString*)strUrl parameters:(NSString*)parameters success:(void(^)(id XMLParser))success fail:(void(^)(id error))fail{ 44      45     AFHTTPRequestOperationManager *maneger = [AFHTTPRequestOperationManager manager]; 46     //设置请求格式 47     maneger.requestSerializer = [[AFJSONRequestSerializer alloc]init]; 48     //设置返回数据格式 49     maneger.responseSerializer = [[AFXMLParserResponseSerializer alloc]init]; 50      51      52     [maneger POST:strUrl parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { 53         success(responseObject); 54     } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 55         fail(error); 56     }]; 57 } 58  59 /** 60  *  get 方法请求 json 61  */ 62 + (void)requestJSON_GET:(NSString*)strUrl success:(void(^)(id json))success fail:(void(^)(id error))fail{ 63      64     AFHTTPRequestOperationManager *mamager = [AFHTTPRequestOperationManager manager]; 65      66     mamager.responseSerializer = [[AFJSONResponseSerializer alloc]init]; 67      68     mamager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/plain",@"text/html",nil]; 69      70     [mamager GET:strUrl parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { 71          72         success(responseObject); 73          74     } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 75          76         fail(error); 77          78     }]; 79      80 } 81  82  83  84  85 + (void)requestIMG_GET:(NSString*)strUrl success:(void(^)(id image))success fail:(void(^)(id error))fail{ 86     AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 87      88     manager.responseSerializer = [[AFImageResponseSerializer alloc]init]; 89      90     [manager GET:strUrl parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { 91         if (success) { 92             success(responseObject); 93         } 94     } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 95         if (fail) { 96             fail(error); 97         } 98     }]; 99 }100 101 /**102  *  文件下载103  */104 + (void)sessionDownloadWithUrl:(NSString *)urlStr success:(void (^)(NSURL *fileURL))success fail:(void (^)())fail105 {106     107     AFURLSessionManager *manage = [[AFURLSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];108     109     //设置 request110     NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]];111        //设置下载任务112     NSURLSessionDownloadTask *tast = [manage downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {113         //指定文件下载路径114         //将下载文件保存在缓存路径中115         116         NSString *path = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0];117         NSString *filePath = [path stringByAppendingString:response.suggestedFilename];118         119         // URLWithString返回的是网络的URL,如果使用本地URL,需要注意120         NSURL *url = [NSURL fileURLWithPath:filePath];121         122         if (success) {123             success(url);124         }125         return url;126         127     } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {128         NSLog(@"%@---- %@", filePath, error);129         if (error) {130             fail();131         }132     }];133     134     [tast resume];135 }136 137 /**138  *  文件上传139  *  block success 参数类型为解析好的 JSON 数据 , 字典或数组 140  */141 + (void)upLoad:(NSString*)urlStr filePath:(NSString *)filePath success:(void(^)(id responseObject))success fail:(void(^)())fail{142     143     AFURLSessionManager *manager = [[AFURLSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];144      NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlStr]];145     146     NSURLSessionUploadTask *task = [manager uploadTaskWithRequest:request fromFile:[NSURL fileURLWithPath:filePath] progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {147         if (error) {148             fail();149         }else{150             success(responseObject);151         }152     }];153     [task resume];154     155     156 }157 158 /**159  *  POST - 请求JSON160  *  需要导入 UIKit+AFNetworking161  */162 + (void)requestJSON_POST:(NSString*)strUrl parameters:(NSDictionary*)parameters success:(void(^)(id json))success fail:(void(^)(id error))fail{163     164     AFHTTPRequestOperationManager *maneger = [AFHTTPRequestOperationManager manager];165     //设置请求格式166     maneger.requestSerializer = [[AFHTTPRequestSerializer alloc]init];167     //设置返回数据格式168     maneger.responseSerializer = [[AFJSONResponseSerializer alloc]init];169    170     maneger.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/plain",@"text/html",nil];171     172     [maneger POST:strUrl parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {173         success(responseObject);174     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {175         fail(error);176     }];177 }178 179 180 @end
AFNetWorking_Demo.m

AFNetworking-2.6.1.zip 下载


上一篇:NSPredicate谓词

下一篇:iOS网络编程

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表