美文网首页程序员
AFN的基本使用(序列化)

AFN的基本使用(序列化)

作者: CoderJyq | 来源:发表于2016-06-06 16:03 被阅读507次

问题描述 : 使用AFN发送网络请求时, 服务器返回的响应体responseObject默认是JSON数据,并且AFN已经帮我们做好了反序列处理, 返回的responseObject实际是一个经过反序列处理的OC对象.
如果服务器返回的是JSON数据,那么AFN会帮我们做反序列处理;但如果返回的数据是XML呢 ? 或者既不是JSON ,也不是XML ,而且其他数据类型又该如何处理 ? 本文将探讨后面两种情况.

1,服务器返回XML数据

这里我使用AFN发送一个简单的GET请求来说明;
1.创建会话管理者对象

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSDictionary *dict = @{@"type":@"XML"};

2.实际上AFN给我们封装了一个设置序列化方法的属性

//设置AFN的序列化方法--XML
manager.responseSerializer = [AFXMLParserResponseSerializer serializer];

3.发送GET请求

[manager GET:@"http://xxx" parameters:dict progress:nil success:
^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        NSLog(@"成功---%@---%@",responseObject,[responseObject class]);
        
        //得到XML解析器
        NSXMLParser *parser = responseObject;
        
        //设置代理
        parser.delegate = self;
        
        //开始解析
        [parser parse];
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
        NSLog(@"失败---%@",error);
    }];

4.代理方法

#pragma mark NSXMLParserDelegate
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
attributes:(NSDictionary<NSString *,NSString *> *)attributeDict { 

    NSLog(@"elementName:%@--%@",elementName,attributeDict);

}

P.S : 更多关于XML数据解析,请点击--XML数据解析

2,服务器返回其他类型数据(非JSON非XML)

1.创建会话管理者对象

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

2.如果服务器返回的数据既不是JSON也不是XML

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

3.发送GET请求

[manager GET:@"http://xxx.png" parameters:nil 
progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSLog(@"成功---%@---%@",responseObject,[responseObject class]);
        
        UIImage *image = [UIImage imageWithData:responseObject];
        self.imageView.image = image;
        //注意, GET请求默认是在主线程中执行的
        NSLog(@"%@---",[NSThread currentThread]);
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
        NSLog(@"失败---%@",error);
    }];

相关文章

  • 多线程网络07

    1 AFN基本使用(GET和POST) 2 AFN实现文件下载 3 AFN实现文件上传 5 AFN序列化相关处理 ...

  • iOS之网络篇(你知道这些零碎的知识吗?)

    1.AFN使用技巧 2.AFN文件上传 3.使用AFN进行序列化处理 4.使用AFN来检测网络状态 5.数据安全 ...

  • 04 AFN

    一: AFN框架基本使用 #######1.1 AFN内部结构 #######1.2 AFN的基本使用 1, 发送...

  • AFN的基本使用(序列化)

    问题描述 : 使用AFN发送网络请求时, 服务器返回的响应体responseObject默认是JSON数据,并且A...

  • iOS开发-AFNetworking框架基本使用

    一、AFN框架基本使用 1.1 AFN内部结构 1.2 AFN的基本使用 (1)发送POST请求的方式 (2)使用...

  • AFN框架使用

    AFN框架使用 1.AFN框架基本使用 2 .AFN的基本使用 (1)发送GET请求的两种方式(POST同) (2...

  • AFN框架基本使用

    一、AFN内部结构 AFN结构体 NSURLConnection: NSURLSession 二、AFN的基本使用...

  • AFN

    1.AFN框架基本使用 1 AFN内部结构 2 AFN的基本使用 (1)发送GET请求的两种方式(POST同) (...

  • AFNetWorking框架

    1.AFN框架基本使用 1.1 AFN内部结构 1.2 AFN的基本使用 (1)发送GET请求的两种方式(POST...

  • AFN 基本使用

    GET&POST 请求 文件下载 文件上传 序列化处理 监听网络状态 GET 方式发送请求 POST方式发送请求 ...

网友评论

    本文标题:AFN的基本使用(序列化)

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