Имеет ли Java полное перечисление для кодов ответа HTTP?

Мне интересно, есть ли тип перечисления в некоторой стандартной библиотеке классов Java, которая определяет символические константы для всех допустимых кодов ответа HTTP. Он должен поддерживать преобразование в/из соответствующих целочисленных значений.

Я отлаживаю код Java, который использует javax.ws.rs.core.Response.Status. Он работает, но он определяет только половину действительных кодов ответа HTTP.

Ответ 3

Ну, есть статические константы точных целочисленных значений в классе HttpURLConnection

Ответ 5

Использовать класс javax.servlet.http.HttpServletResponse

Пример:

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

Ответ 6

Если вы используете Netty, вы можете использовать:

Ответ 7

Кажется, что все игнорируют часть типа "перечисления" вашего вопроса.

Пока нет канонического источника для кодов состояния HTTP, есть простой способ добавить любые отсутствующие константы статуса, которые вам нужны, к тем, которые предоставляются javax.ws.rs.core.Response.Status, без добавления каких-либо дополнительных зависимостей в ваш проект.

javax.ws.rs.core.Response.Status - это только одна реализация интерфейса javax.ws.rs.core.Response.StatusType. Вам просто нужно создать собственное перечисление для реализации с определениями для кодов состояния, которые вы хотите.

Основные библиотеки, такие как Javax, Jersey и т.д., записываются в интерфейс StatusType не в реализацию Status (или они, конечно, должны). Поскольку ваше новое перечисление состояния реализует StatusType, его можно использовать в любом месте, где вы бы использовали константу javax.ws.rs.core.Response.Status.

Просто помните, что ваш собственный код также должен быть записан в интерфейс StatusType. Это позволит вам использовать ваши собственные коды состояния вместе со стандартными.

Вот суть с простой реализацией с константами, определенными для кодов статуса "Информационный 1xx": https://gist.github.com/avendasora/a5ed9acf6b1ee709a14a

Ответ 9

1) Чтобы получить причину текст, если у вас есть только код, вы можете использовать:

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) Чтобы получить причину кода, если у вас есть только текст, вы можете использовать BasicHttpResponse.

Подробнее см. здесь: https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/message/BasicHttpResponse.html

Ответ 10

Лучшим поставщиком констант кода статуса http, вероятно, будет класс Jetty org.eclipse.jetty.http.HttpStatus, потому что:

  • В maven есть пакет javadoc, который важен, если вы ищете константу и знаете только номер → просто откройте страницу api docs и найдите номер
  • константы содержат номер кода состояния.

Единственное, что я хотел бы улучшить: поставить код состояния перед текстовым описанием, чтобы сделать поиск автозаполнения более удобным, когда вы начинаете с кода.

Ответ 11

Другой вариант - использовать класс HttpStatus из сообщества Apache commons-httpclient, который предоставляет вам различные статусы Http как константы.