AFN基本使用
来源:互联网 发布:机器人发音软件 编辑:程序博客网 时间:2024/06/05 18:14
AFN
NSURLConnection包装方法
GET
// 1.创建AFN管理者// AFHTTPRequestOperationManager内部包装了NSURLConnectionAFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];// 2.利用AFN管理者发送请求NSDictionary *params = @{ @"username" : @"520it", @"pwd" : @"520it" };[manager GET:@"http://120.25.226.186:32812/login" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"请求成功---%@", responseObject);} failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"请求失败---%@", error);}];
POST
// 1.创建AFN管理者// AFHTTPRequestOperationManager内部包装了NSURLConnectionAFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];// 2.利用AFN管理者发送请求NSDictionary *params = @{ @"username" : @"520it", @"pwd" : @"520it" };[manager POST:@"http://120.25.226.186:32812/login" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"请求成功---%@", responseObject);} failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"请求失败---%@", error);}];
NSURLSession包装方法
GET
// 1.创建AFN管理者AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];// 2.利用AFN管理者发送请求NSDictionary *params = @{ @"username" : @"520it", @"pwd" : @"520it" };[manager GET:@"http://120.25.226.186:32812/login" parameters:params success:^(NSURLSessionDataTask *task, id responseObject) { NSLog(@"请求成功---%@", responseObject);} failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"请求失败---%@", error);}];
POST
// 1.创建AFN管理者AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];// 2.利用AFN管理者发送请求NSDictionary *params = @{ @"username" : @"520it", @"pwd" : @"520it" };[manager POST:@"http://120.25.226.186:32812/login" parameters:params success:^(NSURLSessionDataTask *task, id responseObject) { NSLog(@"请求成功---%@", responseObject);} failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"请求失败---%@", error);}];
文件下载
// 1.创建AFN管理者 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; // 2.利用AFN管理者发送请求 NSURLRequest *reuqest = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://120.25.226.186:32812/resources/videos/minion_02.mp4"]]; [[manager downloadTaskWithRequest:reuqest progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) { // targetPath: 已经下载好的文件路径 NSLog(@"targetPath = %@", targetPath); NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; NSURL *documentsDirectoryPath = [NSURL fileURLWithPath:[path stringByAppendingPathComponent:response.suggestedFilename]]; // 返回需要保存文件的目标路径 return documentsDirectoryPath; } completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) { NSLog(@"filePath = %@", filePath); }] resume];
- 监听进度
/* 要跟踪进度,需要使用 NSProgress,是在 iOS 7.0 推出的,专门用来跟踪进度的类! NSProgress只是一个对象!如何跟踪进度!-> KVO 对属性变化的监听! @property int64_t totalUnitCount; 总单位数 @property int64_t completedUnitCount; 完成单位数 */ NSProgress *progress = nil; // 注册通知 [progress addObserver:self forKeyPath:@"completedUnitCount" options:NSKeyValueObservingOptionNew context:nil];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { NSLog(@"%@", object); /** 准确的获得进度 localizedDescription 10% localizedAdditionalDescription completed 32,768 of 318,829 fractionCompleted 0.102776(completedUnitCount/totalUnitCount) */ if ([object isKindOfClass:[NSProgress class]]) { NSProgress *p = (NSProgress *)object; NSLog(@"%@, %@, %f", p.localizedDescription, p.localizedAdditionalDescription, p.fractionCompleted);
- 文件上传
// 1.创建AFN管理者 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; // 2.利用AFN管理者发送请求 [manager POST:@"http://120.25.226.186:32812/upload" parameters:@{@"username" : @"lnj"} constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { NSData *data = [NSData dataWithContentsOfFile:@"/Users/NJ-Lee/Desktop/Snip20150811_1.png"]; [formData appendPartWithFileData:data name:@"file" fileName:@"lnj.png" mimeType:@"image/png"]; } success:^(NSURLSessionDataTask *task, id responseObject) { NSLog(@"请求成功---%@", responseObject); } failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"请求失败---%@", error); }];
[formData appendPartWithFileURL:[NSURL fileURLWithPath:@"/Users/NJ-Lee/Desktop/Snip20150811_1.png"] name:@"file" fileName:@"lnj.png" mimeType:@"image/png" error:nil];
[formData appendPartWithFileURL:[NSURL fileURLWithPath:@"/Users/NJ-Lee/Desktop/Snip20150811_1.png"] name:@"file" error:nil];
AFN解耦
- 自定义单利类基础Manager
- 优点: 替换框架只需要求改单利类即可
序列化
- AFN默认将服务器返回的数据当做JSON处理, 会自动解析
- manager.responseSerializer = [AFJSONRequestSerializer serializer];
- 告诉AFN,以XML形式解析服务器返回的数据
- manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
- 告诉AFN, 不处理服务器返回的数据, 原样返回
- manager.responseSerializer = [AFHTTPResponseSerializer serializer];
- AFN默认将服务器返回的数据当做JSON处理, 会自动解析
网络状态检测
- AFN
// 1.创建网络监听对象 AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; // 2.设置网络状态改变回调 [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { /* AFNetworkReachabilityStatusUnknown = -1, // 未知 AFNetworkReachabilityStatusNotReachable = 0, // 无连接 AFNetworkReachabilityStatusReachableViaWWAN = 1, // 3G 花钱 AFNetworkReachabilityStatusReachableViaWiFi = 2, // 局域网络,不花钱 */ switch (status) { case 0: NSLog(@"无连接"); break; case 1: NSLog(@"3G 花钱"); break; case 2: NSLog(@"局域网络,不花钱"); break; default: NSLog(@"未知"); break; } }]; // 3.开始监听 [manager startMonitoring];
- 苹果自带
- (void)viewDidLoad { [super viewDidLoad]; // 注册通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil]; // 开始监听网络 self.reachability = [Reachability reachabilityForInternetConnection]; [self.reachability startNotifier];}- (void)dealloc{ [[NSNotificationCenter defaultCenter] removeObserver:self]; [self.reachability stopNotifier];}- (void)getNetworkStatus{ if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable) { NSLog(@"wifi"); }else if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable) { NSLog(@"手机自带网络"); }else { NSLog(@"没有网络"); }}
0 0
- AFN的 基本使用
- AFN基本使用01
- AFN基本使用02
- AFN基本使用
- AFN-的基本使用
- 25>AFN的基本使用
- iOS开发之AFN的基本使用
- AFN使用
- AFN使用1
- AFN使用讲解
- AFN的使用
- AFN使用介绍
- 25>AFN使用总结
- AFN的使用
- AFN的使用方式
- AFN的使用
- 使用AFN网络监听
- AFN框架使用
- maven在eclipse建立工程,运行出现Server IPC version 9 cannot communicate with client version 4错误
- easyui datagrid 批量编辑和提交
- 单例模式
- 建立WordPress博客
- 日经春秋 20150825
- AFN基本使用
- OSI七层模型详解
- Android 网络通信框架Volley简介
- 日经社説 20150825 北方領土交渉の厳しい現実
- mysql安装图解 mysql图文安装教程(详细说明)
- dev view 列名称居中
- window 环境下 apache james 3.0-beta4 安装、搭建、运行。
- opencv Bmp和opencv格式转换
- SSi框架整合