【问题标题】:Ignoring NSURLErrorDomain error -999 does not work in UIWebView忽略 NSURLErrorDomain 错误 -999 在 UIWebView 中不起作用
【发布时间】:2012-12-13 13:00:11
【问题描述】:

我试图避免在UIWebView 的委托返回这样的错误时产生的问题。我的委托实现中有常见的解决方法(我在 Internet 的任何地方都看到过)

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {

    if ([error code] == NSURLErrorCancelled) return;
}

我遇到的问题是这并不总是有效。有时会加载网页,有时会加载网页的某些部分(标题、文本的一部分...),有时不会加载任何内容。

还有其他解决方案吗?是否存在任何可以正常工作的浏览器的开源实现?

【问题讨论】:

  • 也许您应该检查一下在加载失败的情况下遇到了什么错误。
  • @PhillipMills 总是一样,NSURLErrorDomain 错误 -999
  • 你想避免什么?实际上你的代码什么也没做,无论错误代码是否等于 NSURLErrorCancelled,函数都会返回。
  • 我知道我什么都没做(我删除了它),但这是我在访问过的每个寻找解决方案的网站上看到的。

标签: ios uiwebview


【解决方案1】:

来自 Apple 文档:

NSURLErrorCancelled (-999)

"当异步加载被取消时返回。Web Kit 框架委托在对加载资源执行取消操作时会收到此错误。请注意,如果取消下载,NSURLConnection 或 NSURLDownload 委托将不会收到此错误。 "

因此,最有可能发生这种情况的情况是,在第一个请求完成之前,您先加载一个请求,然后再加载另一个请求(或同一个请求)。这可能发生。例如,如果您在像 viewDidAppear: 这样可以多次调用的方法中调用 loadRequest(或 loadHTMLString)。据报道,如果您快速点击 UIWebView 中的 2 个链接,也会发生这种情况。

因此,一般建议是查看您调用loadRequest(或loadHTMLString)的方式和位置,并可能提供一些代码。

为了解决这个问题,我建议将以下跟踪添加到您的 Web 视图委托:

- (void)webViewDidStartLoad:(UIWebView *)webView {
      NSLog(@"Starting to download request: %@", [webView.request.URL absoluteString]);
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
      NSLog(@"Finished downloading request: %@", [webView.request.URL absoluteString]);
}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {

    if ([error code] == NSURLErrorCancelled)
      NSLog(@"Canceled request: %@", [webView.request.URL absoluteString]);
}

如果您检查输出,您应该更清楚地看到发生了什么。如果您粘贴输出,我们可以尝试进一步帮助您。

【讨论】:

    【解决方案2】:

    大多数时候在使用 NSURLConnection 或 UIWebView 时,这个错误是由于超时造成的。 可能真的不是你的代码,而是你的连接。

    【讨论】:

      猜你喜欢
      • 2017-12-04
      • 2015-11-14
      • 2013-12-30
      • 1970-01-01
      • 2014-03-07
      • 2018-01-22
      • 1970-01-01
      • 2013-04-11
      相关资源
      最近更新 更多