NSURL不喜欢获取变量

时间:2011-01-18 16:42:00

标签: iphone objective-c xcode

当我将字符串传递给NSURL时,我收到错误。

Entity: line 6: parser error : EntityRef: expecting ';'
zzzzzzz.com/feeds/rss/zzzz/zzzz/get_feed.php?c=zzzz&s=zzzz&f

它不会停止应用程序或任何东西,但我觉得应该解决。看起来它不喜欢&符号。我尝试用&替换,但这并不能解决问题。

NSString *blogAddress = @"http://zzzzzz.com/feeds/rss/zzzz/zzzz/get_feed.php?c=zzzz&s=zzzz&f=most_recent";
NSURL *url = [NSURL URLWithString: blogAddress];
CXMLDocument *rssParser = [[[CXMLDocument alloc] initWithContentsOfURL:url options:0 error:nil] autorelease];

2 个答案:

答案 0 :(得分:2)

尝试像这样编码您的网址字符串......

NSURL *url = [NSURL URLWithString:[blogAddress stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

答案 1 :(得分:1)

你需要URLEncode你的字符串。我用了一个类别来做:

URLUtils.h:

@interface NSString (URLUtils)

- (NSString *) urlEncodeValue;

@end

URLUtils.m:

#import "URLUtils.h"


@implementation NSString (URLUtils)

- (NSString *) urlEncodeValue {
    return (NSString *) CFURLCreateStringByAddingPercentEscapes(NULL,
                                                               (CFStringRef) self,
                                                               NULL,
                                                               (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                                               kCFStringEncodingUTF8 );
}

@end

然后在课程中加入URLUtils.h之后,您可以这样做:

NSURL *url = [NSURL URLWithString: [blogAddress urlEncodeValue]];

应该这样做。

祝你好运!