【问题标题】:Remove XML header using AFNetworking使用 AFNetworking 删除 XML 标头
【发布时间】:2018-08-31 03:42:24
【问题描述】:

我目前正在使用AFNetworking 使用下面的代码在网络上获取我的数据。我的问题是,responseObject 带有 XML 标头标签:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>

有没有办法在没有这些标签的情况下使用AFNetworking 请求?我知道这可以在NSString 上完成,但我认为这不是正确的方法。谢谢!

NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"this is my URL"]];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];

[manager GET:URL.absoluteString parameters:nil progress:nil 
success:^(NSURLSessionTask *task, id responseObject) {
    NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];

} failure:^(NSURLSessionTask *operation, NSError *error) {
    NSLog(@"Wilson: %@", error);
    return;
}];

【问题讨论】:

  • 如果你想解析 XML,header 需要在那里,否则它将不是有效的 XML。
  • 在此之后我不会解析上述 XML,@rmaddy
  • 如果您只是想将 XML 视为普通的旧字符串,那么您需要编写代码来删除字符串中您不想要的任何部分。
  • 如果没有其他解决方案,那么可以。我正在尝试找出是否有更好的方法来完成这项任务。
  • 没有。你想做的事很不寻常。

标签: ios objective-c xml afnetworking


【解决方案1】:

您可以使用正则表达式来删除这部分响应,这里我写了一个正则表达式来删除它。

NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"this is my URL"]];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];

[manager GET:URL.absoluteString parameters:nil progress:nil
   success:^(NSURLSessionTask *task, id responseObject) {

     NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
     NSString *pattern = @"(<\\?xml.*\\?>)";
     NSError *error = NULL;
     NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:&error];

     NSString *newString = [regex stringByReplacingMatchesInString: string
                                                      options: 0
                                                        range: NSMakeRange(0, [string length])
                                                 withTemplate: @""];
     NSLog(@"the response without XML Header is: %@", newString);

    } failure:^(NSURLSessionTask *operation, NSError *error) {
        NSLog(@"Wilson: %@", error);
        return;
 }];

我希望这些代码对您的问题有用。

【讨论】:

  • 您能解释一下这是如何产生 XML 结果但没有标准 &lt;?xml ... ?&gt; 标题行的吗?
  • 哦,对不起,这是一个误会,我改变了我的答案,请再次检查。谢谢;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-05
  • 1970-01-01
相关资源
最近更新 更多