所以對於我的一位iOS用戶端,我發起POST上傳數據(比如30MB)的一大塊,通過:的iOS NSURLConnection的POST錯誤處理
[[NSURLConnection connectionWithRequest:req delegate:self] retain];
不過,我需要處理URL不好的情況 - 比如說返回404的情況。問題是,我的didSendBodyData
委託方法被重複調用,就像應該假設URL是正確的一樣,直到32K的數據塊爲止,直到它達到了30MB的文件總大小。我實際上是用這種方法進行計算來顯示和顯示一個進度條,即使有一個無效的URL,它看起來就像是在傳輸整個文件(我不確定在封面下面發生了什麼 - 它可以實際上什麼都做不了,URL解析成404!)
那麼,假設上傳20秒後,我的didReceiveResponse
委託方法終於被調用了,在那裏我可以檢查NSURLResponse並看到404被提供了。爲什麼在我能夠得到任何類型的錯誤之前它似乎傳輸整個文件?使用,我怎麼能知道這是404之前它實際上做任何事情?無論如何要告訴didSendBodyData
方法,或任何其他方式來告訴我所看到的?
一個更大的問題是,我讓你限制上傳時間,所以它在x秒後停止,此時我取消連接(在didSendBodyData
方法的中間),這樣做似乎沒有知道任何事情的方式甚至出現了URL的錯誤。
這似乎應該有一個可笑的簡單的解決方案,但我沒有看到它。謝謝你的幫助。
是的,我已經實現了didReceiveResponse - 這就是問題所在。 didReceiveResponse確實是用正確的404代碼調用的,但是直到* didSendBodyData被調用超過bazillion次之後,因爲它似乎將一個30MB文件上傳到任何地方。 因此,在啓動上傳20秒後,以及看起來一切正常後,我能夠看到它是一個404.我需要馬上看到,就像你期望的那樣... – 2012-08-01 21:38:42
你爲什麼不做首先沒有數據的請求 - 檢查來自服務器的有效響應代碼。因爲在得到回覆之前,你總是會嘗試發送BodyData。 – AppHandwerker 2012-08-02 06:59:11