A /同步NSURLConnection:获取没有下载数据的响应?

时间:2009-07-24 20:13:05

标签: iphone objective-c uiwebview nsurlconnection

非常感谢帮助。我被困在这里:

在我开始在UIWebView中加载URL之前,我需要检查一个响应。然而,同步NSURLConnection将首先下载数据,然后让我访问响应,这是不好的。

异步NSURLConnection将让我在收到任何数据之前检查响应,但我只能检查委托方法连接中的响应:didReceiveResponse :.但是,我必须告诉我的webView的delegete方法(webView:shouldStartLoadWithRequest:navigationType :)等待响应到那里。因为两个代理都在主线程中(它们必须是吗?我猜是这样)我不能简单地使用NSCondition来停止webView的委托(因为这意味着停止主线程)。

有没有人知道如何解决这个问题?

提前致谢。

3 个答案:

答案 0 :(得分:4)

如果您只需要标题,则可以先发出HEAD请求(而不是GET)。那将只返回标题,没有任何正文。这甚至可能足够快,你可以考虑同步进行,尽管你显然想彻底测试它。

<强>更新
实际上,不要同步这样做。即使响应量很小,单独请求的延迟通常也会超出您想要处理的范围。

答案 1 :(得分:1)

使用NSConnection阅读所有数据,然后使用UIWebView将其加载到-loadData:MIMEType:textEncodingName:baseURL:

答案 2 :(得分:0)

首先,你真的不应该对网络数据使用同步方法,潜在的延迟是不好的。

我建议您拨打两个电话:第一个找到MIME类型,一旦您确定它就会取消连接。第二,当你想下载完整的数据。由于这可能是加载到UIWebView,这似乎并不合理。