2012-04-04 54 views
2

我創建一個NSURLConnection,但使用無效的URL(http://thiswontwork.com/asdf)。我在主線程中調用它,並且在委託中實現了所有的委託方法。NSURLConnection的掛着無效URL

連接掛起並無法調用任何的委託方法,我本來期望connection:didFailWithError:被調用。唯一的代表方法是

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse 

有沒有人遇到過這樣的事情?

下調試發生在設備和在模擬器(iOS5的上xCode4)。

已創建具有單個按鈕例子的瑣碎視圖控制器證明,如果需要的話可以張貼代碼。

超時間隔被所述請求(30秒)設定。

+1

你如何創建連接,它似乎是問題在別的地方,你可以添加代碼嗎? – rishi 2012-04-04 04:37:45

+1

確保沒有被調用的委託方法拼寫正確。 – Costique 2012-04-04 04:40:44

+0

將在稍後發佈代碼,但相當奇怪的是,如果我刪除上面強調的委託方法,則其他代表方法將使用成功響應代碼進行調用。我有一些其他(非平凡)的代碼在NSURLConnection中也有一些奇怪的掛起。它在後續項目中的舊項目我一直在使用另一個庫。 – gamozzii 2012-04-04 04:46:36

回答

1

如果你返回零,連接完成。我現在不在文檔前,但我相信這是返回傳遞給函數的NSURLRequest的標準做法。喜歡的東西:

-(NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response{ 
    return request; 
} 

編輯

看文檔之後,我明白你的意思。如果您返回nil,會發生什麼情況,文檔是非常具有誤導性的。它說,如果您返回零,連接將繼續,但我相信這只是在response不是零的情況下。我測試了在我編寫的一個小型下載管理器項目中返回nil,它似乎完全阻止了連接。

這似乎是某個錯誤或資料不全的一個實例。

+0

除了文檔暗示(和我的經驗似乎是),即使它不是一個真正的重定向,該方法可以被調用,所以你需要檢查響應 - 如果響應爲零,因爲我明白它可以返回零。 – gamozzii 2012-04-06 00:03:02

+0

@gamozzii我明白你的意思了。作爲迴應編輯。 – NJones 2012-04-08 03:47:01