美文网首页我爱编程
IOS框架学习之AFN序列化

IOS框架学习之AFN序列化

作者: 最强的小强 | 来源:发表于2018-05-24 18:48 被阅读0次
    1. 首先利用 CocoaPods 把框架AFN导入到项目中。
    2. 然后在ViewController里面导入<AFNetworking.h>, http请求记得配置 APP Transport。记得遵守协议 NSXMLParserDelegate

    1. json请求序列化

    -(void)json
    {
        // 创建会话管理者
        AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
        
        // 写参数
        NSDictionary *paramDict=@{
                                  @"username":@"520it",
                                  @"pwd":@"520it",
                                  @"type":@"JSON"
                                  };
        // 发送get请求
        [manager GET:@"http://120.25.226.186:32812/login" parameters:paramDict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            
           
            NSLog(@"%@",responseObject);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            NSLog(@"请求失败--%@",error);
        }];
    }
    
    

    2.xml序列化

    -(void)xml
    {
        // 创建会话管理者
        AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
        
        // 如果是返回的是 xml 数据,那么应该修改AFN的解决方案
        manager.responseSerializer=[AFXMLParserResponseSerializer serializer];
        // 写参数
        NSDictionary *paramDict=@{
                                  @"type":@"XML"
                                  };
        // 发送get请求
        [manager GET:@"http://120.25.226.186:32812/video" parameters:paramDict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            
            NSXMLParser *parser=(NSXMLParser *)responseObject;
            // 设置代理
            parser.delegate=self;
            // 开始解析
            [parser parse];
            //NSLog(@"%@-%@",[responseObject class],responseObject);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            NSLog(@"请求失败--%@",error);
        }];
    }
    
    

    3. 如何返回的数据既不是xml,也不是json那么应该修改解析方案

    #pragma mark - 如何返回的数据既不是xml,也不是json那么应该修改解析方案
    -(void)httpData2
    {
        // 创建会话管理者
        AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];
        manager.responseSerializer.acceptableContentTypes=[NSSet setWithObject:@"text/html"];
        // 如果是返回的是 xml 数据,那么应该修改AFN的解决方案
        manager.responseSerializer=[AFHTTPResponseSerializer serializer];
        // 发送get请求
        [manager GET:@"http://www.baidu.com" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            NSLog(@"%@-%@",[responseObject class],[[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding] );
            
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            NSLog(@"请求失败--%@",error);
        }];
        
        
    }
    

    另:NSXMLParserDelegate委托中解析结点的方法

    -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict
    {
        NSLog(@"%@----%@",elementName,attributeDict);
    
    }
    

    相关文章

      网友评论

        本文标题:IOS框架学习之AFN序列化

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