【问题标题】:Website Does Not Download Completely - Using stringWithContentsOfURL:网站未完全下载 - 使用 stringWithContentsOfURL:
【发布时间】:2013-05-31 10:00:30
【问题描述】:

我正在尝试下载一个网站,但只下载了整个网站的四分之一。

    NSString *tagiString = @"http://www.tagesanzeiger.ch";
    NSURL *tagiURL = [NSURL URLWithString:tagiString];
    NSError *error;
    NSString *text =[NSString stringWithContentsOfURL:tagiURL
                                             encoding:NSASCIIStringEncoding
                                                error:&error];

我没有收到任何表明下载未完成的错误。 有什么想法吗?

【问题讨论】:

  • 您是否尝试过记录文本字符串并检查您是否获得所需的 html 字符串??
  • 你能详细说明你的期望与你得到的吗?
  • 我检查了你的代码。我能够从 url 获取所有数据。在控制台中打印您的文本并检查。
  • 我记录了文本字符串,发现它在大约 50'000 个字符处被截断。整个站点可能接近 200,000 个字符。 Nishant,你得到了多少个字符?

标签: ios nsstring nsurlconnection


【解决方案1】:

我不建议为此使用stringWithContentsOfURL。相反,您应该使用 iOS 的内置网络类,它可以更好地控制下载操作。例如,使用stringWithContentsOfURL,您无法调整或设置超时,这意味着在慢速连接时,您的下载很容易失败(这可能就是这里发生的情况)。

默认情况下stringWithContentsOfURL 也不是异步的,因此除非您在辅助线程上运行该代码,否则您将停止 UI(这很糟糕)。

这个现有问题 - Making stringWithContentsOfURL asynchronous - Is it safe? - 有一些示例代码向您展示如何使用更合适的 NSURLConnection 类将网站下载为字符串。它将使您的错误处理和调试变得更加容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多