IOS框架学习之AFN序列化

  1. 首先利用 CocoaPods 把框架AFN导入到项目中。
  2. 然后在ViewController里面导入, 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 *)attributeDict
{
    NSLog(@"%@----%@",elementName,attributeDict);

}

你可能感兴趣的:(IOS框架学习之AFN序列化)