美文网首页AFNetworking
iOS·HTTP那点事(4)AFNetworking

iOS·HTTP那点事(4)AFNetworking

作者: devRen | 来源:发表于2016-03-15 20:05 被阅读267次

    简介:

    AFHTTPSessionManager

    • AFHTTPSessionManager内部包装了NSURLSession
    • 是AFN中最重要的对象之一
    • 封装了HTTP请求的常见处理
    • GET\POST请求
    • 解析服务器的响应数据
    • 创建
    AFHTTPSessionManager*mgr= [AFHTTPSessionManagermanager];
    

    AFHTTPRequestOperationManager

    • AFHTTPRequestOperationManager内部包装了NSURLConnection
    • 创建
    AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
    

    GET\POST请求

    • GET(1)
    //AFHTTPRequestOperationManager内部包装了NSURLConnection
    AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
        
        NSDictionary *params = @{
                                 @"username" : @"520it",
                                 @"pwd" : @"520it"
                                 };
        
        [mgr GET:@"http://120.25.226.186:32812/login" parameters:params
         success:^(AFHTTPRequestOperation *operation, id responseObject) {
             NSLog(@"请求成功---%@", responseObject);
         } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
             NSLog(@"请求失败---%@", error);
        }];
    
    • GET(2)
    // AFHTTPSessionManager内部包装了NSURLSession
        AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
    
        NSDictionary *params = @{
                                 @"username" : @"520it",
                                 @"pwd" : @"520it"
                                 };
    
        [mgr GET:@"http://120.25.226.186:32812/login" parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
            NSLog(@"请求成功---%@", responseObject);
        } failure:^(NSURLSessionDataTask *task, NSError *error) {
            NSLog(@"请求失败---%@", error);
        }];
    
    • POST
    // AFHTTPRequestOperationManager内部包装了NSURLConnection
        AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
        
        NSDictionary *params = @{
                                 @"username" : @"520it",
                                 @"pwd" : @"520it"
                                 };
        
        [mgr POST:@"http://120.25.226.186:32812/login" parameters:params
         success:^(AFHTTPRequestOperation *operation, id responseObject) {
             NSLog(@"请求成功---%@", responseObject);
         } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
             NSLog(@"请求失败---%@", error);
         }];
    

    上传文件

        AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
    
        [mgr POST:@"http://120.25.226.186:32812/upload" parameters:@{@"username" : @"123"}
            constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
            // 在这个block中设置需要上传的文件
                [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"/Users/xiaomage/Desktop/placeholder.png"] name:@"file" error:nil];
        } success:^(NSURLSessionDataTask *task, id responseObject) {
            NSLog(@"-------%@", responseObject);
        } failure:^(NSURLSessionDataTask *task, NSError *error) {
            
        }];
    

    解析服务器返回的数据

    • 默认会解析JSON数据
    • XML数据
    AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
        
        // responseSerializer 用来解析服务器返回的数据
        
        // 告诉AFN,以XML形式解析服务器返回的数据
        mgr.responseSerializer = [AFXMLParserResponseSerializer serializer];
        
        NSDictionary *params = @{
                                 @"username" : @"520it",
                                 @"pwd" : @"520it",
                                 @"type" : @"XML"
                                 };
        
        [mgr GET:@"http://120.25.226.186:32812/login" parameters:params success:^(NSURLSessionDataTask *task, NSXMLParser *parser) {
            
        } failure:^(NSURLSessionDataTask *task, NSError *error) {
            NSLog(@"请求失败---%@", error);
        }];
    
    • 任何数据类型
    AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
        // 直接使用“服务器本来返回的数据”,不做任何解析
        mgr.responseSerializer = [AFHTTPResponseSerializer serializer];   
    //    [AFJSONResponseSerializer serializer]; // 解析服务器返回的JSON数据
    //    [AFXMLParserResponseSerializer serializer]; // 解析服务器返回的XML数据
        
        [mgr GET:@"http://120.25.226.186:32812/resources/images/minion_02.png" parameters:nil success:^(NSURLSessionDataTask *task, NSData *responseObject) {
            NSLog(@"请求成功---%zd", responseObject.length);
        } failure:^(NSURLSessionDataTask *task, NSError *error) {
            NSLog(@"请求失败---%@", error);
        }];
    

    网络状态监控

        // 开始网络监控
        AFNetworkReachabilityManager *mgr = [AFNetworkReachabilityManager sharedManager];
        
        [mgr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
            NSLog(@"-----当前的网络状态---%zd", status);
        }];
        
        [mgr startMonitoring];
    // 拿到当前网络状态
    //    mgr.networkReachabilityStatus;
    
    //    AFNetworkReachabilityStatusUnknown          = -1,
    //    AFNetworkReachabilityStatusNotReachable     = 0,
    //    AFNetworkReachabilityStatusReachableViaWWAN = 1, //自带网络
    //    AFNetworkReachabilityStatusReachableViaWiFi = 2, //WiFi
    

    相关文章

      网友评论

        本文标题:iOS·HTTP那点事(4)AFNetworking

        本文链接:https://www.haomeiwen.com/subject/gclqlttx.html