AFNetworking用法及网络监测
2015-11-19 21:16
453 查看
AFNetworking github : https://github.com/AFNetworking/AFNetworking
Reachability github : https://github.com/tonymillion/Reachability
先分别介绍一下 AFN 和 Reachability 如何进行网络监测
ps : 由于检测网络有一定的延迟,所以如果启动app立即去检测调用[AFNetworkReachabilityManager sharedManager].networkReachabilityStatus 有可能得到的是status == AFNetworkReachabilityStatusUnknown;但是此时明明是有网的,建议在收到监听网络状态回调以后再取[AFNetworkReachabilityManager sharedManager].networkReachabilityStatus。
Reachability
如果需要实时的网络状态变化通知,需要用到异步的方式
具体请看: http://www.bubuko.com/infodetail-650914.html
AFNetworking 用法
Reachability github : https://github.com/tonymillion/Reachability
先分别介绍一下 AFN 和 Reachability 如何进行网络监测
#import "AFNetworkReachabilityManager.h" // 如果要检测网络状态的变化,必须用检测管理器的单例的startMonitoring [[AFNetworkReachabilityManager sharedManager] startMonitoring]; // 检测网络连接的单例,网络变化时的回调方法 [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { NSLog(@"%ld",status); }]; // 几种不同的网络状态 /* AFNetworkReachabilityStatusUnknown = -1, // 未知 AFNetworkReachabilityStatusNotReachable = 0, // 无连接 AFNetworkReachabilityStatusReachableViaWWAN = 1, // 无线 AFNetworkReachabilityStatusReachableViaWiFi = 2, // WiFi */
ps : 由于检测网络有一定的延迟,所以如果启动app立即去检测调用[AFNetworkReachabilityManager sharedManager].networkReachabilityStatus 有可能得到的是status == AFNetworkReachabilityStatusUnknown;但是此时明明是有网的,建议在收到监听网络状态回调以后再取[AFNetworkReachabilityManager sharedManager].networkReachabilityStatus。
Reachability
添加框架:SystemConfiguration.framework #import "Reachability.h" -(BOOL)isConnectionAvailable{ BOOL isExistenceNetwork = YES; Reachability *reach = [Reachability reachabilityWithHostName:@"www.apple.com"]; switch ([reach currentReachabilityStatus]) { case NotReachable: isExistenceNetwork = NO; //NSLog(@"notReachable"); break; case ReachableViaWiFi: { isExistenceNetwork = YES; // UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"5毛 wifi 5毛 wifi" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:nil, nil]; // alert.delegate = self; // [alert show]; } break; case ReachableViaWWAN: isExistenceNetwork = YES; //NSLog(@"3G"); break; } if (!isExistenceNetwork) { UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"没有网络连接" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:nil, nil]; alert.delegate = self; [alert show]; return NO; } return isExistenceNetwork; }
如果需要实时的网络状态变化通知,需要用到异步的方式
具体请看: http://www.bubuko.com/infodetail-650914.html
AFNetworking 用法
//GET请求 #import"AFHTTPRequestOperationManager.h" // 1 初始化 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; // 2 设置返回数据类型 manager.responseSerializer = [AFHTTPResponseSerializer serializer]; // 3 请求 [manager GET:@"网址字符串" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { // 请求成功代码 } failure:^(AFHTTPRequestOperation *operation, NSError *error) { // 请求失败代码 }]; 其中请求成功的话,就可以直接进行JSON解析 NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil]; NSLog(@"%@",dict); //POST请求 #import"AFHTTPRequestOperationManager.h" // 1 初始化 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; // 2 设置返回数据类型 manager.responseSerializer = [AFHTTPResponseSerializer serializer]; // 3 请求 [manager POST:@"网址字符串" parameters:dict //参数字典 success:^(AFHTTPRequestOperation *operation, id responseObject) { // 请求成功代码 } failure:^(AFHTTPRequestOperation *operation, NSError *error) { // 请求失败代码 }]; 其中请求成功的话,就可以直接进行JSON解析 NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil]; NSLog(@"%@",dict); /* 注意: 1 AFNetworking可以进行JSON数据解析/Plist数据解析.(不支持XML数据解析) 2 URL字符串中如果有特殊字符或者中文字符,AFNETWorking并没有做UTF8的转码,需要:url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; */
相关文章推荐
- windows下重新安装TCP/IP协议栈
- 线程堆栈大小 pthread_attr_setstacksize 的使用【转】 http://www.cnblogs.com/qq78292959/archive/2012/03/29/2423821
- HTTP协议学习(二)——响应状态码及其含义
- HTTP协议学习(一)——URL与资源,报文结构详解
- TCP 三次握手,四次分手
- HttpConnection及Apache HttpClient的一些常见用法的demo
- PC端网络应用和APP应用的差别
- 线程 http://liulinqi206.blog.163.com/blog/static/1346047662014298375680/
- Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现
- 解决Android Studio下载更新Android SDK网络异常或无法下载
- 分拆素数和(http://acm.hdu.edu.cn/showproblem.php?pid=2098)
- [Unity通信]一个基于socket的3DARPG网络游戏(一):建立连接和事件分发
- [连载]《C#通讯(串口和网络)框架的设计与实现》- 0.前言
- HTTP/1.1 新建会话失败
- [连载]《C#通讯(串口和网络)框架的设计与实现》- 0.前言
- OkHttp
- 各协议(TCP/IP、UDP、HTTP、socket)内与外简述
- Http协议网络请求java方式
- Android网络编程中的Header中的用法
- Java网络编程