AFNetworking用法及网络监测

来源:互联网 发布:折800淘宝女装 编辑:程序博客网 时间:2024/06/04 18:11

AFNetworking github : https://github.com/AFNetworking/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]; */
1 0
原创粉丝点击