Afnetworking 3.0 迁移:如何使用 xml 帖子正文发布

Posted

技术标签:

【中文标题】Afnetworking 3.0 迁移:如何使用 xml 帖子正文发布【英文标题】:Afnetworking 3.0 Migration : How to post with xml post body 【发布时间】:2016-01-14 05:56:44 【问题描述】:

我正在尝试将一些数据发布到服务器,正文格式为 XML,一切正常

request.HTTPBody = [self.body dataUsingEncoding:NSUTF8StringEncoding];
request.HTTPMethod = @"POST";
 [request setValue:@"application/xml" forHTTPHeaderField:@"Content-Type"];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

现在在 Afnetworking 3.0 中,他们将 AFHTTPRequestOperation 更改为 AFHTTPSessionManager 以任何方式使用 AFHTTPSessionManager 发布 xml 数据

【问题讨论】:

【参考方案1】:

您可以使用AFURLSessionManager 类进行此用途。为此,创建一个 AFURLSessionManager 实例,然后使用您的 NSURLRequest 从管理器创建 NSURLSessionDataTask 。使用该任务发布您的数据 例如代码:

NSMutableURLRequest *request = ....;
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] init];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes =  [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/xml"];
NSURLSessionDataTask *task = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) 
        NSString *fetchedXML = [[NSString alloc] initWithData:(NSData *)responseObject encoding:NSUTF8StringEncoding];
        NSLog(@"Response string: %@",fetchedXML);
 ];
[task resume];

更新 如果您使用AFXMLParserResponseSerializer 作为响应序列化程序,那么 添加此代码以开始 xml 解析

NSXMLParser *xmlparser = responseObject;
[xmlparser setDelegate:self];
[xmlparser parse];

并实现NSXMLParserDelegate 方法。

你可以在这里找到一个很好的解析 xml 的教程 - XML Parsing with NSXMLParser

【讨论】:

@johnykuty :感谢您的快速回复。 [request setValue:@"application/xml" forHTTPHeaderField:@"Content-Type"] 是否可行?我收到应用程序/xml 错误:( 收到错误消息“NSLocalizedDescription=Request failed: unacceptable content-type: text/xml” 请提供完整的错误日志,包括error.userinfo 通过添加 manager.responseSerializer = [AFXMLParserResponseSerializer serializer];现在我得到 responseObject 它是一个 NSxmlParser 对象我将如何从中挑选数据.. @Ali 抱歉,我没有收到错误。在我的项目中,它的编译没有任何错误。最后,您如何在项目中导入 AFNetworking、可可豆荚或在项目中复制源文件。还有导入语句?

以上是关于Afnetworking 3.0 迁移:如何使用 xml 帖子正文发布的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 3.0 迁移重定向块

AFNetworking 3.0迁移指南

AFNetworking 3.0迁移指南

AFNetworking 3.0迁移指南

AFNetworking 新版本3.0的迁移

我如何在 AFNetworking 3.0 中获取 allHTTPHeaderFields