iOS-AFN

/**
 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;
        }
    }];
}
原文地址:https://www.cnblogs.com/DarbyCJ/p/3745898.html