无法使用stringWithContentsOfURL检索某些页面

时间:2011-05-29 05:10:09

标签: objective-c cocoa-touch ios nsurl

我正在尝试使用stringWithContentsOfURL:从网络上获取HTML文件。我的问题是,有时它有效,但有时却没有。例如,我试过:

NSString *string = [NSString stringWithContentsOfURL:
                               [NSURL URLWithString:@"http://www.google.com/"] 
                                            encoding:encoding1 
                                               error:nil];

NSLog(@"html = %@",string);

这很好用,但是当我用@"http://www.youtube.com/"替换URL时,我只得到“NULL”。有没有人知道发生了什么?是因为YouTube有某种保护吗?

1 个答案:

答案 0 :(得分:4)

Google的主页使用ISO-8859-1编码(又名“Latin-1”或NSISOLatin1StringEncoding)。 YouTube使用UTF-8(NSUTF8StringEncoding),您使用encoding1变量指定的编码必须与相关网页相匹配。

如果您只是想要网页并且不关心它的编码,请尝试以下方法:

NSStringEncoding encoding;
NSError *error;
NSString *string = [NSString stringWithContentsOfURL:
                               [NSURL URLWithString:@"http://www.google.com/"] 
                                       usedEncoding:&encoding
                                              error:&error];

NSLog(@"html = %@",string);

此方法将告诉您编码是什么(通过将其写入encoding变量),但您可以将其丢弃并专注于字符串。

相关问题