2011-11-14 28 views
0

我有第三方服務器週期性地將http post請求消息發送到URL(可以配置)。在我的應用程序中,我通過啓動碼頭服務器並監聽配置的URL上的數據來讀取數據。
想知道是否可以監聽服務器發送的數據,而無需啓動像碼頭這樣的服務器?在沒有服務器的情況下讀取httppost請求消息

+1

你有沒有碼頭的HTTP服務器?是的,有很多選擇。你有沒有HTTP服務器的HTTP服務器? No. –

回答

2

您總是可以自己創建一個套接字,並在端口80(或類似的東西)上偵聽HTTP請求。見http://download.oracle.com/javase/6/docs/api/java/net/ServerSocket.html

但有幾個問題:Theres很多開銷,你需要做的自己。解析HTTP請求,提取標題和正文,並根據頭文件需要做某些事情,例如緩存,身份驗證等。這就是你需要實現的很多東西。使用現有的Web服務器通常是一個更好的主意,因爲編寫它的人(通常)確切知道他們在做什麼。

另一種選擇是Apache的HttpCore庫(http://hc.apache.org/httpcomponents-core-ga/index.html)。你可以使用它來編寫你自己的Http服務器...但是,仍然有很多東西需要你照顧...

如果你想這樣做的目的是爲了學習,繼續並實施它你自己。當它用於生產時,堅持使用常用的Web服務器。

+0

啓動碼頭服務器不是開銷嗎?如果我有像成千上萬的http請求消息進來,碼頭服務器會創建幾個servlet線程,並佔用大部分jvm執行時間 – vjk

+1

但碼頭知道如何處理這些,因爲碼頭開發人員考慮縮放......您可以嘗試不同的服務器,如tomcat/catalina等,看看哪一個最適合你的情況。在某些邊緣情況下,編寫自己的服務器可能會很好,但我認爲在這種情況下,您正在描述的是您現成的產品效果更好 – klaustopher

+0

無法與最後一點保持一致。誠實地說,vjk,如果你已經問過如何在沒有HTTP服務器的情況下監聽HTTP請求,那麼你最好不要自己重新啓動HTTP服務器(還)。 – BalusC

相關問題