Ich frage mich, ob es in einer Standard-Java-Klassenbibliothek einen Aufzählungstyp gibt, der symbolische Konstanten für alle gültigen HTTP-Antwortcodes definiert. Es sollte die Konvertierung in / von den entsprechenden Ganzzahlwerten unterstützen.
Ich debugge Java-Code, der javax.ws.rs.core.Response.Status verwendet. Es funktioniert, definiert aber nur etwa die Hälfte der gültigen HTTP-Antwortcodes.
Die Schnittstelle
javax.servlet.http.HttpServletResponse
von der Servlet-API enthält alle Antwortcodes in Form vonint
KonstantennamenSC_<description>
. Siehe http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.htmlquelle
Nun, es gibt statische Konstanten der exakten Ganzzahlwerte in der HttpURLConnection- Klasse
quelle
java.net.HttpURLConnection.HTTP_BAD_REQUEST
Wenn Sie Spring verwenden, hat die Version 3.x genau das, wonach Sie suchen: http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/http/HttpStatus.html
quelle
HttpStatus.XXX.value()
, um int zu bekommen.Wenn Sie Netty verwenden , können Sie Folgendes verwenden:
quelle
Jeder scheint den "Aufzählungstyp" -Teil Ihrer Frage zu ignorieren.
Zwar gibt es keine kanonische Quelle für HTTP - Statuscodes ist , gibt es eine einfache Möglichkeit, fügen Sie alle fehlenden Status - Konstanten , die Sie zu dem von versehen müssen ,
javax.ws.rs.core.Response.Status
ohne sie durch zusätzliche Abhängigkeiten zu Ihrem Projekt.javax.ws.rs.core.Response.Status
ist nur eine Implementierung derjavax.ws.rs.core.Response.StatusType
Schnittstelle. Sie müssen lediglich eine eigene Implementierungsaufzählung mit Definitionen für die gewünschten Statuscodes erstellen.Core - Bibliotheken wie Javax, Jersey, etc. auf die schriftliche Schnittstelle
StatusType
nicht die ImplementierungStatus
(oder sie sicherlich sollte sein). Da Ihre neue Statusaufzählung implementiert wirdStatusType
, kann sie überall dort verwendet werden, wo Sie einejavax.ws.rs.core.Response.Status
Konstante verwenden würden .Denken Sie daran, dass Ihr eigener Code auch in die
StatusType
Benutzeroberfläche geschrieben werden sollte. Auf diese Weise können Sie neben den "Standard" -Codes auch Ihre eigenen Statuscodes verwenden.Hier ist eine Übersicht mit einer einfachen Implementierung mit Konstanten, die für die Statuscodes "Informational 1xx" definiert sind: https://gist.github.com/avendasora/a5ed9acf6b1ee709a14a
quelle
Verwenden Sie die Klasse javax.servlet.http.HttpServletResponse
Beispiel:
quelle
1) Um den Grundtext zu erhalten, wenn Sie nur den Code haben, können Sie Folgendes verwenden:
Wo
httpCode
wäre der Ursachencode, den Sie von der HTTP-Antwort erhalten haben?Weitere Informationen finden Sie unter https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/impl/EnglishReasonPhraseCatalog.html
2) Um den Ursachencode zu erhalten , wenn Sie nur den Text haben, können Sie verwenden
BasicHttpResponse
.Weitere Informationen finden Sie hier: https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/message/BasicHttpResponse.html
quelle
Schauen Sie sich auch die Restlet Status-Klasse an:
http://www.restlet.org/documentation/1.1/api/org/restlet/data/Status.html
quelle
Der beste Anbieter für Konstanten des http-Statuscodes ist wahrscheinlich die org.eclipse.jetty.http.HttpStatus-Klasse von Jetty, weil:
Das einzige, was ich verbessern würde: Setzen Sie die Statuscode-Nummer vor die Textbeschreibung, um die Suche nach automatischer Vervollständigung bequemer zu gestalten, wenn Sie mit dem Code beginnen.
quelle
Eine andere Option ist die Verwendung einer
HttpStatus
Klasse aus dem Apache commons-httpclient, die Ihnen die verschiedenen HTTP-Status als Konstanten bereitstellt.quelle