/** AFN第三方网络框架 AFN是对NSURLConnection的封装,所以在使用AFN时,URL&Request的步骤,和传统网络访问步骤一致。 只是利用AFHTTPRequestOperation对NSURLConnection做了封装,可以单独处理 JSON XML Plist Image 以及 下载 文件上传 随着NSURLSession的推出,AFN中比较有利用价值的就剩下两点: * 文件上传 * 判断网络连接状态 ========================================================= AFN使用简单方式 */ // 1. URL NSURL *url = [NSURL URLWithString:@"http://XXXXXXXX"]; // 2. Request NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:2.0f]; // 3. AFN操作 AFJSONRequestOperation *op = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { // 成功的操作 NSLog(@"%@", JSON); } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { // 失败的操作 NSLog(@"%@", error); }]; [op start]; /** ========================================================================== */ #pragma mark 检测网路状态 /* AFNetworkReachabilityStatusUnknown = -1, 未知 AFNetworkReachabilityStatusNotReachable = 0, 未连接 AFNetworkReachabilityStatusReachableViaWWAN = 1, 3G AFNetworkReachabilityStatusReachableViaWiFi = 2, 无线连接 */ - (IBAction)checkNetwork:(id)sender { // 1. AFNetwork 是根据是否能够连接到baseUrl来判断网络连接状态的 // 提示:最好使用门户网站来判断网络连接状态。 NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"]; AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:url]; _httpClient = client; [_httpClient setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { // 之所以区分无线和3G主要是为了替用户省钱,省流量 // 如果应用程序占流量很大,一定要提示用户,或者提供专门的设置,仅在无线网络时使用! switch (status) { case AFNetworkReachabilityStatusReachableViaWiFi: NSLog(@"无线网络"); break; case AFNetworkReachabilityStatusReachableViaWWAN: NSLog(@"3G网络"); break; case AFNetworkReachabilityStatusNotReachable: NSLog(@"未连接"); break; case AFNetworkReachabilityStatusUnknown: NSLog(@"未知错误"); break; } }]; }