2013-08-22 18 views
4

我正在嘗試使用Java庫來驗證可能的HTTP響應的Universe,而不是編寫自己的邏輯來單獨檢查每個響應代碼。爲什麼'302'未在javax.ws.rs的Response.Status中定義?

我發現靜態類Response.Statusjavax.ws.rs這似乎完全符合此目的。其文檔狀態如下:

HTTP定義的常用狀態碼,完整列表請參閱HTTP/1.1文檔 。

如果您訪問link to the HTTP/1.1 docs,通過使用javax文件引用,清楚地看到302響應狀態代碼爲有效。

但是,下列調用返回null,意思是「匹配的狀態或空是不匹配的狀態定義」 - 這顯然是不正確的:

Response.Status.fromStatusCode(302); 

果然,302/FOUND不在這個類中定義的枚舉。

有沒有人有任何想法,爲什麼這是?這是javax.ws.rs代碼中的疏忽 - 還是故意這樣做?

+2

我想他們並不認爲302是「常用的」。 –

+0

@HotLicks這是瘋狂的談話(由他們,而不是你)。 302可能是無處不在的狀態碼之一 - 它用於重定向。 – jtravaglini

回答

4

在2.0中添加枚舉值Response.Status.FOUND(302)(以及從早期版本中缺少的其他幾個響應代碼)。

+0

冒着看起來很愚蠢的風險,我該如何使用javax.ws.rs的2.0版本?我正在使用Oracle 7 JDK在Eclipse中進行開發,但它在OP中的檢查中仍然失敗。 – jtravaglini

+2

@jtravaglini - 您可能正在使用J2SE 7和J2EE 1.6的組合。您需要單獨[下載J2EE 1.7](http://www.oracle.com/technetwork/java/javaee/downloads/java-ee-sdk-7-downloads-1956236.html) –

1

有相當多的狀態代碼沒有被該枚舉覆蓋。看起來很清楚,他們不認爲302「通用」足以包含名稱。

+1

考慮到提供全套設備所需的打字時間只有幾分鐘,因此它是不完整的。 – Raedwald

+0

我說過同樣的事情 - 這很神祕,爲什麼這不在1.0。特別是對於302. – jtravaglini