2011-01-13 30 views
0

在HttpPost執行失敗後,我發現重新使用我的http客戶端時出現問題。它可能是超時或服務不可用(也許是其他人)。該請求可能會引發套接字超時,並且當我稍後使用客戶端(使用新的HttpPost對象)時,它將引發非法狀態異常。我的研究表明,當套接字未被標記爲「重用」時,會發生這種情況,因爲如果在第二個線程嘗試使用http-client之前有兩個線程,而另一個處理請求的過程中自然發生,因此它的插座)。在Android上,當拋出異常時,DefaultHttpClient是否能夠正確地清理HttpPost?

我認爲在http客戶端代碼中存在一個錯誤,但可能有一些'最佳實踐',我沒有正確遵循或一些已知的工作。

任何幫助,將不勝感激。

回答

2

我的研究表明,這發生在套接字沒有標記爲「重用」的情況下,如果在第二個線程嘗試使用http-client(因此它的套接字)。

默認情況下HttpClient不是線程安全的。您需要使用ThreadSafeClientConnManager

+0

好吧,我將線程安全的客戶端連接管理器 - 但如果我序列化(即通過工作隊列),那麼它應該安全工作。但是接下來的另一個請求會出現異常問題。 – mobibob 2011-01-13 03:53:20

相關問題