UIApplication openURL - 摆脱%0A

时间:2013-03-22 12:02:47

标签: ios rss uiapplication openurl linefeed

问题:

我正在将xml文件(RSS feed)中的一些信息解析为我正在开发的提要阅读器。尝试使用Safari [[UIApplication sharedApplication] openURL:url]打开新闻网址时无效。

我怀疑xml文件本身准备不充分。实际上,我对此感到震惊,我无法想出办法。

详细信息:

该项目在测试过的所有Feed中都能正常运行,只有一个特殊的Feed无效。更具体地说,在解析时,它会提供这种网址:%0Ahttp://google.com%0A

Here是我正在尝试阅读的XML文件。

我正在使用Ray Wenderlich的RSS阅读器教程作为工作台。

这是我正在使用的代码:

NSURL *url = [NSURL URLWithString:[entry.articleUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
if (![[UIApplication sharedApplication] openURL:url])
    NSLog(@"%@%@",@"Failed to open url:",[url description]);

获取此信息:2013-03-22 12:25:57.918 myApp[426:c07] Failed to open url:%0Ahttp://google.it/index.html%0A

请注意:我用这个项目测试的每一个饲料(例如20+)都没有给出任何麻烦。任何帮助都将为我的健康和繁荣生活带来个人的祝福。

1 个答案:

答案 0 :(得分:2)

这与XML解析无关,这与正确的URL有关。

[NSURL URLWithString:[entry.articleUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 这是非常非常错误的。

你永远不应该逃避整个网址。您应该只转义查询参数。开头和结尾的%0A是由换行符编码引起的。

在这种情况下,它们应该已经被转义,所以只需修剪空格:

NSString* urlString = [entry articleUrl];
NSString* trimmedUrlString = [urlString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSURL *url = [NSURL URLWithString:trimmedUrlString];