【问题标题】:Unable to retrieve certain pages using stringWithContentsOfURL无法使用 stringWithContentsOfURL 检索某些页面
【发布时间】:2011-09-04 04:43:15
【问题描述】:

我正在尝试使用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 有某种保护吗?

【问题讨论】:

  • 您尝试过哪些其他网址?这可能是加载延迟。

标签: objective-c cocoa-touch ios nsurl


【解决方案1】:

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 变量),但您可以将其扔掉并专注于字符串。

【讨论】:

  • NSStringEncodingtypedefNSUInteger。第一行不应该是NSStringEncoding encoding;吗?
  • 哇,这个错字持续了 18 个月。固定。
猜你喜欢
  • 2023-03-27
  • 2014-08-19
  • 2018-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多