zoukankan      html  css  js  c++  java
  • 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;
            }
        }];
    }
  • 相关阅读:
    使用vue自定义组件以及动态时间
    vue案列
    解决adb devices无法连接夜神模拟器
    手动解除浏览器跨域限制
    HBuilder实现WiFi调试Android
    Spring mvc文件下载
    3大框架Struts、Hibernate、Spring简单了解
    简单了解ajax
    使用本地计划任务定时关闭azure虚拟机
    调整虚拟机的尺寸
  • 原文地址:https://www.cnblogs.com/DarbyCJ/p/3745898.html
Copyright © 2011-2022 走看看