English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Формат HTTP-запросов и HTTP-ответов аналогичен, структура следующая:
Начальная строка состояния + символы возврата каретки и перевода строки (возврат каретки + перевод строки)
Ноль или несколько заголовков + символы возврата каретки и перевода строки
Пробел, представляющий собой символы возврата каретки и перевода строки
Опциональное сообщение с телом, например файл, данные запроса или вывод запроса
Например, заголовки ответа сервера могут выглядеть так:
HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (Пробел) <!doctype ...> <html> <head>...</head> <body> ... </body> </html>
Строка состояния включает версию HTTP (в данном примере HTTP/1.1), статус-код (в данном примере 200) и короткое сообщение, соответствующее статус-коду (в данном примере OK).
Ниже приведен список возможных HTTP-статус-кодов веб-сервера и связанных с ними информации:
Код | Сообщение | Описание |
---|---|---|
100 | Продолжить | Только часть запроса была принята сервером, но если она не была отклонена, клиент должен продолжить этот запрос. |
101 | Переключение протоколов | Сервер переключает протокол. |
200 | OK | Запрос успешен. |
201 | Создан | Запрос полон и создает новый ресурс. |
202 | Принят | Запрос принят и обработан, но обработка была неполной. |
203 | Неавторитетная информация | |
204 | Нет содержимого | |
205 | Сброс содержимого | |
206 | Частичное содержимое | |
300 | Множественные возможности | Список ссылок. Пользователь может выбрать ссылку и перейти к этому месту. Максимально пять адресов. |
301 | Перемещено навсегда | Запрошенная страница была перемещена на новый URL. |
302 | Found | Запрашиваемая страница временно перенесена на новый URL. |
302 | Найдено | См. Другое |
Запрашиваемая страница может быть найдена по другому URL. | 304 | |
Не изменено | Используйте прокси | |
306 | Неиспользованный | Использовался в предыдущих версиях. В настоящее время не используется, но код все еще сохраняется. |
307 | Временное перенаправление | Запрашиваемая страница временно перенесена на новый URL. |
400 | Плохой запрос | Сервер не понимает запрос. |
401 | Не авторизован | Запрашиваемая страница требует имя пользователя и пароль. |
402 | Требуется оплата | Вы еще не можете использовать этот код. |
403 | Запрещен | Доступ к запрашиваемой странице запрещен. |
404 | Не найдено | Сервер не может найти запрашиваемую страницу. |
405 | Метод не разрешен | Метод, указанный в запросе, не разрешен. |
406 | Не приемлемо | Сервер генерирует только один ответ, который не принят клиентом. |
407 | Требуется аутентификация прокси | Прежде чем送达 запрос, вам нужно использовать аутентификацию прокси-сервера. |
408 | Timeout запроса | Запрос требует больше времени, чем сервер может ждать, timeout. |
409 | Конфликт | Запрос не может быть выполнен из-за конфликта. |
410 | Ушедший | Запрашиваемая страница больше не доступна. |
411 | Требуется длина | "Content-Length" не определено. Сервер не может обработать запрос от клиента без Content-Length. |
412 | Предположение не выполнено | Предположение, указанное в запросе, оценено сервером как false. |
413 | Запрос содержит слишком большой объект | Сервер не принимает этот запрос, потому что запрос содержит слишком большой объект. |
414 | URL запроса слишком длинный | Сервер не принимает этот запрос, потому что URL слишком длинный. Это происходит, когда вы преобразуете запрос "post" в запрос "get" с длинной информацией в запросе. |
415 | Неподдерживаемый тип媒体 | Сервер не принимает этот запрос, потому что тип媒体 не поддерживается. |
417 | Неудовлетворенные ожидания | |
500 | Внутренняя ошибка сервера | Не завершенный запрос. Сервер встретил неожиданную ситуацию. |
501 | Not Implemented | недоконченный запрос. Сервер не поддерживает необходимую функцию. |
502 | Bad Gateway | недоконченный запрос. Сервер получил недействительный ответ от upstream сервера. |
503 | Service Unavailable | недоконченный запрос. Сервер временно перегружен или завис. |
504 | Gateway Timeout | Gateway Timeout |
505 | HTTP Version Not Supported | сервер не поддерживает "версию HTTP протокола". |
Следующие методы могут быть использованы для установки HTTP статуса кода в Servlet программе. Эти методы через HttpServletResponse объект доступен.
номер | номер. метод & описание |
---|---|
1 | public void setStatus ( int statusCode ) Этот метод устанавливает произвольный статус код. Метод setStatus принимает int (статус код) в качестве параметра. Если ваш ответ содержит особый статус кода и документ, убедитесь, что вы используете PrintWriter перед тем как вернуть любое содержимое, вызовите setStatus. |
2 | public void sendRedirect(String url) Этот метод генерирует ответ 302 вместе с новым URL документа. Location заголовок. |
3 | public void sendError(int code, String message) Этот метод отправляет статус кода (обычно 404) вместе с коротким сообщением, которое автоматически форматируется и отправляется клиенту в документе HTML. |
Этот пример отправляет код ошибки 407 в браузер клиента, который показывает сообщение "Need authentication!!!".
// импорт необходимых java библиотек import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import javax.servlet.annotation.WebServlet; @WebServlet("/showError") // расширение класса HttpServlet public class showError extends HttpServlet { // Обработка GET метода запроса метода public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Установка кода ошибки и причины response.sendError(407, "Необходимо аутентификация!!!" ); } // Обработка POST метода запроса метода public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
Теперь, вызов上面的 Servlet покажет следующий результат:
HTTP Status 407 - Необходимо аутентификация!!!тип Отчет о статусе сообщение Необходимо аутентификация!!! описание Клиент сначала должен аутентифицировать себя через прокси (Необходимо аутентификация!!!). Apache Tomcat/5.5.29 |