2016-02-03 34 views
0

我想知道是否有一種快速的方法來解析HTTP獲取請求的第一行來獲取目錄信息?例如,如果我有:GET /test.txt HTTP/1.1,那麼獲取test.txt或任何請求可能最簡單的方法是什麼。該文件可能會改變,所以硬編碼已經結束。如何在java中解析HTTP Get Request的第一行?

是string.split()最簡單的方法。如果是的話,最好的分割方法是什麼。我不能用「/」來分割它,因爲可能有多個我需要的。是否有可能在第一個「/」之後將它分開抓取所有內容,然後在第一個空間停下來。謝謝。

編輯:

它會更好,只是刪除GET和HTTP/1.1,因爲我不需要它們,然後只要抓住一切?

+0

您是否希望將請求的文件實際提供給客戶端?或者您是否正在檢查其他原因的HTTP請求? –

+0

聞起來像一個XY問題。你想完成什麼? – chrylis

+0

快速執行還是快速寫入? – Raedwald

回答

0

3.1.1。請求行

請求行以方法標記開頭,後跟單個空間(SP),請求目標,另一個空間(SP),協議版本爲 ,以CRLF結尾。

request-line = method SP request-target SP HTTP-version CRLF 

來源:http://tools.ietf.org/html/rfc7230

你的方法是好的。只是刪除MethodHTTP-Version

String requestUri = firstLineStr.substring(firstLineStr.indexOf(' ')+1, firstLineStr.lastIndexOf(' ')); 
+0

非常感謝。 – ben54321

+0

正確的答案,但引用過時的spec。 –

+0

@JulianReschke好的,更改爲RFC 7230 – cshu

0

它會更好,只是刪除GET和HTTP/1.1,因爲我不需要它們,然後只要抓住一切? - > 如果您確定文件名是您需要的唯一東西,並且始終可以在GET和HTTP/1.1之間使用,那麼是的,這是所有可能解決方案中的正確途徑。 但是,如果您正在處理某個Web應用程序,那麼我相信有API可用於檢索信息。 此外請確保您的請求始終爲GET,否則您必須保留PUT等選項。

+0

這是一個簡單的Web服務器的分配,所以GET是我們目前唯一要尋找的東西。在這種情況下,我只使用第一行來確定文件類型/目錄,並存儲整行以備需要時使用。 – ben54321