zoukankan      html  css  js  c++  java
  • AFNetworking 3.0

    AFNetworking 3.0 
     
    3.0之前

    AFNetworking基于NSURLConnection和NSURLSession。
    AFHTTPSessionManager包装的NSURLSession
    AFHTTPRequestOperationManager包装的NSURLConnection

    3.0之后

    AFNetworking只基于NSURLSession。苹果将NSURLConnection淘汰了。


    文件上传:

    1、直接使用POST方式上传,通过在block里面设置需要上传的 文件。原理:就是在内部将请求体拼接起来。
    2、上传多个文件:直接在block中设置多个上传文件的路径。
    3、文件上传一般使用POST方式而不是使用AFHTTPSessionManager 的uploadTaskWithRequest:方法。但是还是需要我们自己拼接请求体(fromData:NSData*)这个参数。


    设置解析服务器返回的数据

    1、默认是JSON

        AFHTTPSessionManager *mgr = [AFHTTPsessionManager manager];
        mgr.responseSerializer默认是JSON.

    2、设置AFN以XML形式解析服务器返回的数据

        AFHTTPSessionManager *mgr = [AFHTTPsessionManager manager];
        mgr.responseSerializer = [AFXMLParserResponseSerializer serializer]

    3、设置AFN直接使用服务器的数据类,不解析。

        AFHTTPSessionManager *mgr = [AFHTTPsessionManager manager];
        mgr.responseSerializer = [AFHTTPResponseSerializer serializer]

    创建AFHTTPSessionManager
        AFHTTPSessionManager*mgr= [AFHTTPSessionManagermanager];

    GET请求
        -(NSURLSessionDataTask*)GET:(NSString*)URLString
                   parameters:(id)parameters
                   success:(void(^)(NSURLSessionDataTask*task,idresponseObject))success
                   failure:(void(^)(NSURLSessionDataTask*task,NSError*error))failure
    POST请求
        -(NSURLSessionDataTask*)POST:(NSString*)URLString
                   parameters:(id)parameters
                   success:(void(^)(NSURLSessionDataTask*task,idresponseObject))success
                   failure:(void(^)(NSURLSessionDataTask*task,NSError*error))failure

    文件上传
        -(NSURLSessionDataTask*)POST:(NSString*)URLString
                    parameters:(id)parameters
     constructingBodyWithBlock:(void(^)(id<AFMultipartFormData>formData))block
                    success:(void(^)(NSURLSessionDataTask*task,idresponseObject))success
                    failure:(void(^)(NSURLSessionDataTask*task,NSError*error))failure

    https

    通过代理NSURLSessionTaskDelegate来处理证书。
    但是通过AFN内部已经处理好了。


    监控网络状态
    AFN监控网络状态
        AFNetworkReachabilityManager*manager = [AFNetworkReachabilityManagersharedManager];
        [managerstartMonitoring];
    
        [managersetReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatusstatus) {
            //代码
        } ];

    注意:要监控网络连接状态,必须要先调用单例的startMonitoring方法

    苹果自带:Reachbility监控网络状态
    判断现在的网络状态
         if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable) {
        NSLog(@"是wifi");
    } else if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable) {
        NSLog(@"是手机自带网络");
    } else {
        NSLog(@"网络有问题");
    }
    监听目前的网络状态:

    原理:通过监听通知,发现现在的网络发生改变,就获取到现在的网络状态。
    注意:监听通知需要移除通知。也可用单例,在appdalegate中一开始就监听。

        /** 监控网络 */
        @property (nonatomic, strong) Reachability *reachability;
    
        // 监听通知
    
       [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil];
    
       // 开始监控网络
        self.reachability = [Reachability reachabilityForInternetConnection];
        [self.reachability startNotifier];
    
        // 移除通知
        - (void)dealloc
        {
          [[NSNotificationCenter defaultCenter] removeObserver:self];    
          [self.reachability stopNotifier];
          self.reachability = nil;
        }
    
        - (void)getNetworkStatus
        {
            if ([Reachability   reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable) {
                NSLog(@"是wifi");
            } else if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable) {
                NSLog(@"是手机自带网络");
            } else {
                NSLog(@"网络有问题");
            }
         }


    文/闲得一B(简书作者)
    原文链接:http://www.jianshu.com/p/e0a9e3cd327f
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
  • 相关阅读:
    c++ accumulate
    Croc Champ 2013 Round 2 (Div. 2 Edition) B. Ksusha the Squirrel
    ural 1017. Staircases
    ural 1012Kbased Numbers. Version 2 1013. Kbased Numbers. Version 3
    ural 1008. Image Encoding
    ural 1009. Kbased Numbers
    echo命令去掉换行符
    linux中shell 参数变量
    C#中可变字符串StringBuilder和String
    C#异常处理语句
  • 原文地址:https://www.cnblogs.com/W-Kr/p/5484577.html
Copyright © 2011-2022 走看看