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
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
  • 相关阅读:
    jsp转向
    什么是 XDoclet?
    tomcat中的几点配置说明
    mysql5问题
    POJ 3734 Blocks
    POJ 2409 Let it Bead
    HDU 1171 Big Event in HDU
    POJ 3046 Ant Counting
    HDU 2082 找单词
    POJ 1286 Necklace of Beads
  • 原文地址:https://www.cnblogs.com/W-Kr/p/5484577.html
Copyright © 2011-2022 走看看