AFN:AFN序列化处理

Posted on 2016-07-21 16:22  柠檬片  阅读(339)  评论(0)    收藏  举报
  1 #import "ViewController.h"
  2 #import "AFNetworking.h"
  3 
  4 @interface ViewController ()<NSXMLParserDelegate>
  5 
  6 @end
  7 
  8 @implementation ViewController
  9 
 10 -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
 11 {
 12     [self httpData2];
 13 }
 14 
 15 //返回的是JSON数据
 16 -(void)json
 17 {
 18     //1.创建会话管理者
 19     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
 20     
 21     //http://120.25.226.186:32812/login?username=123&pwd=122&type=JSON
 22     //
 23     
 24     NSDictionary *paramDict = @{
 25                                 @"username":@"520it",
 26                                 @"pwd":@"520it",
 27                                 @"type":@"JSON"
 28                                 };
 29     //2.发送GET请求
 30     /*
 31      第一个参数:请求路径(不包含参数).NSString
 32      第二个参数:字典(发送给服务器的数据~参数)
 33      第三个参数:progress 进度回调
 34      第四个参数:success 成功回调
 35      task:请求任务
 36      responseObject:响应体信息(JSON--->OC对象)
 37      第五个参数:failure 失败回调
 38      error:错误信息
 39      响应头:task.response
 40      */
 41     [manager GET:@"http://120.25.226.186:32812/login" parameters:paramDict progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
 42         
 43         NSLog(@"%@---%@",[responseObject class],responseObject);
 44         
 45     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
 46         NSLog(@"请求失败--%@",error);
 47     }];
 48 }
 49 
 50 //返回的是XML
 51 -(void)xml
 52 {
 53     //1.创建会话管理者
 54     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
 55     
 56     //http://120.25.226.186:32812/login?username=123&pwd=122&type=JSON
 57     //
 58     
 59     //注意:如果返回的是xml数据,那么应该修改AFN的解析方案
 60     manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
 61     
 62     NSDictionary *paramDict = @{
 63                                 @"type":@"XML"
 64                                 };
 65     //2.发送GET请求
 66     /*
 67      第一个参数:请求路径(不包含参数).NSString
 68      第二个参数:字典(发送给服务器的数据~参数)
 69      第三个参数:progress 进度回调
 70      第四个参数:success 成功回调
 71         task:请求任务
 72         responseObject:响应体信息(JSON--->OC对象)
 73      第五个参数:failure 失败回调
 74         error:错误信息
 75      响应头:task.response
 76      */
 77     [manager GET:@"http://120.25.226.186:32812/video" parameters:paramDict progress:nil success:^(NSURLSessionDataTask * _Nonnull task,NSXMLParser *parser) {
 78         
 79         //NSLog(@"%@---%@",[responseObject class],responseObject);
 80         //NSXMLParser *parser =(NSXMLParser *)responseObject;
 81         
 82         //设置代理
 83         parser.delegate = self;
 84         
 85         //开始解析
 86         [parser parse];
 87         
 88     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
 89         NSLog(@"请求失败--%@",error);
 90     }];
 91 }
 92 
 93 //返回的二进制数据
 94 -(void)httpData
 95 {
 96     //1.创建会话管理者
 97     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
 98     
 99     //注意:如果返回的是xml数据,那么应该修改AFN的解析方案AFXMLParserResponseSerializer
100     //注意:如果返回的数据既不是xml也不是json那么应该修改解析方案为:
101     //manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
102     manager.responseSerializer = [AFHTTPResponseSerializer serializer];
103     
104     //2.发送GET请求
105     [manager GET:@"http://120.25.226.186:32812/resources/images/minion_01.png" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task,id  _Nullable responseObject) {
106         NSLog(@"%@-",[responseObject class]);
107         
108         //UIImage *image = [UIImage imageWithData:responseObject];
109     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
110         NSLog(@"请求失败--%@",error);
111     }];
112 }
113 
114 -(void)httpData2
115 {
116     //1.创建会话管理者
117     AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
118     
119     //注意:如果返回的是xml数据,那么应该修改AFN的解析方案AFXMLParserResponseSerializer
120     //注意:如果返回的数据既不是xml也不是json那么应该修改解析方案为:
121     //manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
122    
123     //告诉AFN能够接受text/html类型的数据
124     manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
125     
126     manager.responseSerializer = [AFHTTPResponseSerializer serializer];
127     
128     //2.发送GET请求
129     [manager GET:@"http://www.baidu.com" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task,id  _Nullable responseObject) {
130         NSLog(@"%@-%@",[responseObject class],[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding]);
131         
132         //UIImage *image = [UIImage imageWithData:responseObject];
133     } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
134         NSLog(@"请求失败--%@",error);
135     }];
136 }
137 
138 #pragma mark ----------------------
139 #pragma mark NSXMLParserDelegate
140 -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary<NSString *,NSString *> *)attributeDict
141 {
142     NSLog(@"%@--%@",elementName,attributeDict);
143 }
多种情况下的序列化