APPDelegate裏還要設置一下 //監聽網絡狀態,只調用一次 [[AFNetworkReachabilityManager sharedManager] startMonitoring];
#import <Foundation/Foundation.h> @interface MyHttpDownLoad : NSObject //cb callback回調 +(void) download:(NSString *)urlpath param:(NSDictionary *)dict finish:( void (^)(NSData *data,NSDictionary *obj, NSError *error))cb; @end #import "MyHttpDownLoad.h" #import "AFNetworking.h" static BOOL isFirst = NO; static BOOL canCHeckNetwork = NO; @implementation MyHttpDownLoad +(void) download:(NSString *)urlpath param:(NSDictionary *)dict finish:(void (^)(NSData *,NSDictionary *obj, NSError *))cb{ //1..檢查網絡鏈接(蘋果公司提供的檢查網絡的第三方庫 Reachability) //AFN 在 Reachability基礎上作了一個本身的網絡檢查的庫, 基本上同樣 if (isFirst == NO) { //網絡只有在startMonitoring完成後纔可使用檢查網絡狀態 [[AFNetworkReachabilityManager sharedManager] startMonitoring]; [[AFNetworkReachabilityManager sharedManager]setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { canCHeckNetwork = YES; }]; isFirst = YES; } //只能在監聽完善以後才能夠調用 BOOL isOK = [[AFNetworkReachabilityManager sharedManager] isReachable]; //BOOL isWifiOK = [[AFNetworkReachabilityManager sharedManager] isReachableViaWiFi]; //BOOL is3GOK = [[AFNetworkReachabilityManager sharedManager]isReachableViaWWAN]; //網絡有問題 if(isOK == NO && canCHeckNetwork == YES){ NSError *error = [NSError errorWithDomain:@"網絡錯位" code:100 userInfo:nil]; cb(nil, nil,error); return; } //2..實現解析 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; [manager GET:urlpath parameters:dict success:^(NSURLSessionDataTask *task, id responseObject) { //成功 cb是對方傳遞過來的對象 這裏是直接調用 NSDictionary *obj = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; cb(responseObject, obj ,nil); } failure:^(NSURLSessionDataTask *task, NSError *error) { //失敗 cb(nil, nil ,error); }]; }; @end
//2.調用方式 -(void)testAFNetworking{ NSString *urlPath = @"http://10.0.8.8/sns/my/user_list.php"; NSDictionary *params = @{@"page" : @"10"}; [MyHttpDownLoad download:urlPath param:params finish:^(NSData *data,NSDictionary *obj, NSError *error) { if (error == nil) { //obj即爲解析後的數據. NSLog(@"parase my download json is %@",obj); }else{ UIAlertView *av = [[UIAlertView alloc]initWithTitle:@"網絡狀態" message:@"親 網絡不給力" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [av show]; } }]; }