2009-07-24 67 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)。這將只返回標題,沒有任何內容。這甚至可能足夠快,以至於你可以考慮同步進行,儘管你顯然想要徹底地測試它。

更新
其實,不要那樣做同步。即使只有很小的響應大小,單獨請求的延遲通常可能比您想要處理的要多。

相關問題