web-dev-qa-db-ja.com

JavaにはHTTP応答コードの完全な列挙型がありますか?

すべての有効なHTTP応答コードのシンボリック定数を定義する標準のJavaクラスライブラリに列挙型があるかどうか疑問に思っています。対応する整数値との変換をサポートする必要があります。

Javax.ws.rs.core.Response.Statusを使用するいくつかのJavaコードをデバッグしています。動作しますが、有効なHTTP応答コードの約半分しか定義していません。

227
Zoltan Szilagyi

標準のJavaクラスには完全なものはないと思います。 HttpURLConnectionは、HTTP 100/Continueのような非常に多くのコードが欠落しています。

ただし、Apache HttpComponentsには完全なリストがあります。
org.Apache.http.HttpStatus (置換 org.Apache.commons.HttpClient.HttpStatus Apache Httpクライアントから サポート終了

245
John Feminella

サーブレットAPIのインターフェイスjavax.servlet.http.HttpServletResponseには、int定数名SC_<description>の形式のすべての応答コードがあります。 http://docs.Oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html を参照してください

56

さて、 HttpURLConnection クラスには正確な整数値の静的定数があります

35
Mystic

Springを使用している場合、3.xリリースには次のものがあります。 http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/http/HttpStatus。 html

17
Ed J

Javax.servlet.http.HttpServletResponseクラスを使用する

例:

javax.servlet.http.HttpServletResponse.SC_UNAUTHORIZED //401
javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR //500
6

Nettyを使用している場合、以下を使用できます。

6
Andrejs

誰もがあなたの質問の「列挙型」の部分を無視しているようです。

HTTPステータスコードの正規のソースはありませんが、プロジェクトに追加の依存関係を追加せずに、javax.ws.rs.core.Response.Statusによって提供されるものに必要な不足しているステータス定数をaddする簡単な方法があります。

javax.ws.rs.core.Response.Statusは、javax.ws.rs.core.Response.StatusTypeインターフェイスの実装の1つにすぎません。必要なステータスコードの定義を使用して、独自の実装列挙を作成するだけです。

Javax、Jerseyなどのコアライブラリは、interfaceStatusTypeに書き込まれます。implementationStatus(またはそれらは確かにshouldbe)。新しいStatus列挙型はStatusTypeを実装しているため、javax.ws.rs.core.Response.Status定数を使用するあらゆる場所で使用できます。

独自のコードもStatusTypeインターフェイスに書き込む必要があることを覚えておいてください。これにより、独自のステータスコードと「標準」ステータスコードの両方を使用できるようになります。

「情報1xx」ステータスコード用に定義された定数を使用した簡単な実装の要点は次のとおりです。 https://Gist.github.com/avendasora/a5ed9acf6b1ee709a14a

5

1)コードのみを持っている場合、理由textを取得するには、次を使用できます。

org.Apache.http.impl.EnglishReasonPhraseCatalog.INSTANCE.getReason(httpCode,null)

httpCodeは、HTTP応答から取得した理由コードです。

詳細については、 https://hc.Apache.org/httpcomponents-core-ga/httpcore/apidocs/org/Apache/http/impl/EnglishReasonPhraseCatalog.html を参照してください

2)テキストのみがある場合に理由codeを取得するには、BasicHttpResponseを使用できます。

詳細はこちらをご覧ください: https://hc.Apache.org/httpcomponents-core-ga/httpcore/apidocs/org/Apache/http/message/BasicHttpResponse.html

2
Maira Bay

Restlet Statusクラスも確認してください。

http://www.restlet.org/documentation/1.1/api/org/restlet/data/Status.html

2
Greg Noe

別のオプションは、Apache commons-httpclientのHttpStatusクラスを使用して、さまざまなHttpステータスを定数として提供することです。

0
ak123

Httpステータスコード定数の最適なプロバイダーは、Jettyのorg.Eclipse.jetty.http.HttpStatusクラスである可能性があります。理由は次のとおりです。

  • mavenにはjavadocパッケージがあります。これは定数を検索し、番号のみを知っている場合に重要です->単にAPIドキュメントページを開いて番号を検索します
  • 定数にはステータスコード番号自体が含まれます。

私が改善するのは、コードを開始するときに自動補完検索をより便利にするために、テキストの説明の前にステータスコード番号を置くことだけです。

0
user1050755