2009-07-24 34 views
2

非常感谢帮助。我卡在这里:A /同步NSURLConnection:获取没有下载数据的响应?

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

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

有没有人有关于如何解决这个问题的想法?

在此先感谢。

回答

1

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

+0

会很好,但我不能简单地加载一个xx MB文件来找出它的MIME类型。这就是为什么我需要处理响应。 – Yllier 2009-07-24 20:36:21

0

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

我建议你进行两个调用:第一个找到MIME类型,一旦你确定它就取消连接。第二,当你想下载完整的数据。因为这可能是加载到UIWebView,这似乎并不合理。

4

如果你只是需要标题,你可以先做一个HEAD请求(而不是GET)。这将只返回标题,没有任何内容。这甚至可能足够快,以至于你可以考虑同步进行,尽管你显然想要彻底地测试它。

更新
其实,不要那样做同步。即使只有很小的响应大小,单独请求的延迟通常可能比您想要处理的要多。

相关问题