AFNetWorking-网络库-之初体验
// // ViewControllerA.m // AFNetWorking // // Created by bch on 15-3-26. // Copyright (c) 2015年 白超华. All rights reserved. // #import "ViewControllerA.h" #import "AFNetworking.h" //定义2个URL #define BOOK_URL @"https://api.douban.com/v2/book/1220562" #define MP3_URL @"http://music.baidu.com/data/music/file?link=http://yinyueshiting.baidu.com/data2/music/239130183/1226741191427176861128.mp3?xcode=1a50de6b8c4eec19c5954e4e3dcd15d9c3ba3c8b80064e3b&song_id=122674119" @interface ViewControllerA () @end @implementation ViewControllerA - (void)viewDidLoad { [super viewDidLoad]; #if 0 //获取请求管理器(单例),亲 这是一个单例哦 AFHTTPRequestOperationManager * manager=[AFHTTPRequestOperationManager manager]; //发送请求 /* 参数1:URL地址 参数2:参数 */ //GET请求:服务器解析URL的过程,GET请求有长度限制,最大不能超过2KB,GET请求设计的初衷是用来向服务器获取数据的,但是实际应用中,可以上传少量数据 //POST请求:POST请求上传的数据量长度没有限制,POST请求相对GET请求来说更安全,设计初衷就是用来上传上传数据,但是实际应用中,也可以下载少量的数据 NSDictionary *dic=@{@"apikey":@"02970273f8e1e22a07c5075beaa5a67e"}; //https://api.douban.com/v2/book/1220562?apikey=02970273f8e1e22a07c5075beaa5a67e //发送请求 //直接获取URL,而返回的responseObject则是服务器解析好的JSON数据. //字典中可能就是GET方法要上传的少量数据 [manager GET:BOOK_URL parameters:dic success:^(AFHTTPRequestOperation *operation, id responseObject) { //如果请求成功(就会调用这个方法)(网络请求需要时间) //responseObject返回的资源数据 NSLog(@"responseObject = %@",responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { //如果请求失败(就会调用这个方法) }]; #endif //获取请求管理器 (单例) AFHTTPRequestOperationManager * manager=[AFHTTPRequestOperationManager manager]; //修改返回类型(默认请求返回的是JSON数据) //修改返回类型为二进制 manager.responseSerializer=[AFHTTPResponseSerializer serializer]; //利用管理器来发送请求 //请求的线程 //开启网络请求状态 [[UIApplication sharedApplication]setNetworkActivityIndicatorVisible:YES]; AFHTTPRequestOperation * op= [manager GET:MP3_URL parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"请求成功"); NSData * data=(NSData *)responseObject; [data writeToFile:@"Users/qianfeng01/Desktop/hello.mp3" atomically:YES]; //下载完毕就关闭网络请求状态 [[UIApplication sharedApplication]setNetworkActivityIndicatorVisible:NO]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { [[UIApplication sharedApplication]setNetworkActivityIndicatorVisible:NO]; NSLog(@"请求失败!"); }]; //设置查看下载进度 [op setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) { NSLog(@"bytesRead = %lu",bytesRead);//每次下载的数据量 NSLog(@"totalBytesRead = %lld",totalBytesRead);//已经下载的数据量 NSLog(@"totalBytesExpectedToRead = %lld",totalBytesExpectedToRead);//总大小 }]; //开启网络监测状态(网络可达性管理器)[分享监听器] [[AFNetworkReachabilityManager sharedManager]startMonitoring]; //开始连接网络进行监测 [[AFNetworkReachabilityManager sharedManager]setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { //监测成功会调用这个方法
/**
AFNetworkReachabilityStatusUnknown = -1, // 未知
AFNetworkReachabilityStatusNotReachable = 0, // 无连接
AFNetworkReachabilityStatusReachableViaWWAN = 1, // 3G 花钱
AFNetworkReachabilityStatusReachableViaWiFi = 2, // 局域网络,不花钱
*/
NSLog(@"网络状态为:%@",AFStringFromNetworkReachabilityStatus(status)); }]; } @end
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。