2011-03-31 89 views
2

我希望使用HttpURLConnection通過HTTP POST打開與服務器的長連接並處理流數據。這是針對Android項目的。使用HttpURLConnection傳輸數據

目前還不清楚如何用HttpURLConnection做到這一點。在iOS中,NSURLConnection提供了一種異步模式,用戶實現的回調在新數據進入時被調用並可用於解析。

對於Java中的HttpURLConnection,我看到有一個可用的()方法返回可以讀取的字節數。但是,它不清楚我將如何編寫一個流應用程序來打開連接,並在新的流數據可用於解析DataInputStream時作出反應。

我將不勝感激。 HttpURLConnection或Java中的替代類是否支持HTTP連接的非阻塞異步處理?

感謝

回答

1

創建擴展Observable並實現Runnable對象。您的主應用程序實現了Observer,並以觀察者身份添加到您的新對象中。

在新線程中運行您的對象。它會阻止HTTPUrlConneciton上的讀取,並通知觀察者剛纔讀取的數據。

1

有這麼 返回可以 讀取

的字節數可用的()方法沒有沒有。有一個可用的()方法返回可以在不阻塞的情況下讀取的字節數並非完全相同。

HttpURLConnection聽起來不太適合這項任務。 HTTP是一個請求響應協議,而不是流協議,至少在Java類中實現。

+0

閱讀上的彗星,你會看到有一些使用長壽命的HTTP連接的方法很多大型項目... iOS的原生支持非阻塞HTTP連接。標準的Java類顯然從來沒有想象過這是一種可能性(比較老)。 – Paul 2011-03-31 04:31:10

+0

@保羅是否更好? – EJP 2011-03-31 05:48:44