Формат сообщений HTTP-запросов и HTTP-ответов похож и имеет следующую структуру:
-
Начальная строка состояния + CRLF (возврат каретки + перевод строки, т.е. новая строка)
-
Ноль или более строк заголовка + CRLF
-
Пустая строка, т. Е. CRLF
-
Необязательное тело сообщения, такое как файл, данные запроса или выходные данные запроса.
Начальная строка состояния + CRLF (возврат каретки + перевод строки, т.е. новая строка)
Ноль или более строк заголовка + CRLF
Пустая строка, т. Е. CRLF
Необязательное тело сообщения, такое как файл, данные запроса или выходные данные запроса.
Например, заголовок ответа сервера выглядит следующим образом:
HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... (Blank Line) <!doctype ...> <html> <head>...</head> <body> ... </body> </html>
Строка состояния состоит из версии HTTP (HTTP / 1.1 в примере), кода состояния (в примере 200) и очень короткого сообщения, соответствующего коду состояния (в примере OK).
Ниже приведен список кодов состояния HTTP и связанных сообщений, которые могут быть возвращены с веб-сервера.
Код | Сообщение | Описание |
---|---|---|
100 | Продолжить | Сервер получил только часть запроса, но до тех пор, пока он не был отклонен, клиент должен продолжить выполнение запроса |
101 | Протоколы переключения | Сервер переключает протокол. |
200 | Хорошо | Запрос в порядке |
201 | созданный | Запрос завершен, и создан новый ресурс |
202 | Принято | Запрос принят к обработке, но обработка не завершена. |
203 | Неавторизованная информация | |
204 | Без содержания | |
205 | Сбросить содержимое | |
206 | Частичное содержание | |
300 | Множественный выбор | Список ссылок. Пользователь может выбрать ссылку и перейти в это место. Максимум пять адресов |
301 | переехал навсегда | Запрашиваемая страница перемещена на новый URL |
302 | Найденный | Запрашиваемая страница временно перемещена на новый URL |
303 | Смотрите Другое | Запрошенная страница может быть найдена под другим URL |
304 | Не модифицировано | |
305 | Используй прокси | |
306 | неиспользуемый | Этот код был использован в предыдущей версии. Он больше не используется, но код зарезервирован |
307 | Временный редирект | Запрашиваемая страница временно перемещена на новый URL. |
400 | Неверный запрос | Сервер не понял запрос |
401 | неразрешенный | Запрашиваемая страница требует имени пользователя и пароля |
402 | Требуется оплата | Вы не можете использовать этот код еще |
403 | запрещено | Доступ к запрашиваемой странице запрещен |
404 | не обнаружена | Сервер не может найти запрошенную страницу. |
405 | метод не разрешен | Указанный в запросе метод недопустим. |
406 | Неприемлимо | Сервер может генерировать только ответ, который не принят клиентом. |
407 | Требуется проверка подлинности прокси | Вы должны пройти аутентификацию на прокси-сервере, прежде чем этот запрос будет обработан. |
408 | Тайм-аут запроса | Запрос занял больше времени, чем сервер был готов ждать. |
409 | конфликт | Запрос не может быть выполнен из-за конфликта. |
410 | Ушел | Запрашиваемая страница больше не доступна. |
411 | Требуемая длина | «Длина содержимого» не определена. Сервер не примет запрос без него. |
412 | Предварительное условие не выполнено | Предварительное условие, указанное в запросе, оценивается сервером как ложное. |
413 | Запросить объект слишком большой | Сервер не примет запрос, потому что объект запроса слишком велик. |
414 | URL-адрес запроса слишком длинный | Сервер не примет запрос, потому что URL слишком длинный. Происходит при преобразовании запроса «post» в запрос «get» с длинной информацией о запросе. |
415 | Неподдерживаемый тип носителя | Сервер не примет запрос, потому что тип носителя не поддерживается. |
417 | Ожидание не удалось | |
500 | Внутренняя ошибка сервера | Запрос не был выполнен. Сервер встретил неожиданное состояние. |
501 | Не реализованы | Запрос не был выполнен. Сервер не поддерживает требуемую функциональность. |
502 | Bad Gateway | Запрос не был выполнен. Сервер получил неверный ответ от вышестоящего сервера. |
503 | Сервис недоступен | Запрос не был выполнен. Сервер временно перегружен или отключен. |
504 | Время ожидания шлюза | Время ожидания истекло. |
505 | Версия HTTP не поддерживается | Сервер не поддерживает версию «http protocol». |
Методы для установки кода состояния HTTP
Следующие методы могут быть использованы для установки кода состояния HTTP в вашей программе сервлета. Эти методы доступны с объектом HttpServletResponse .
Sr.No. | Метод и описание |
---|---|
1 |
public void setStatus (int statusCode) Этот метод устанавливает произвольный код состояния. Метод setStatus принимает int (код состояния) в качестве аргумента. Если ваш ответ включает в себя специальный код состояния и документ, обязательно вызовите setStatus, прежде чем возвращать какой-либо контент с помощью PrintWriter . |
2 |
public void sendRedirect (String url) Этот метод генерирует 302 ответ вместе с заголовком Location, содержащим URL нового документа |
3 |
public void sendError (int code, String message) Этот метод отправляет код состояния (обычно 404) вместе с коротким сообщением, которое автоматически форматируется внутри документа HTML и отправляется клиенту. |
public void setStatus (int statusCode)
Этот метод устанавливает произвольный код состояния. Метод setStatus принимает int (код состояния) в качестве аргумента. Если ваш ответ включает в себя специальный код состояния и документ, обязательно вызовите setStatus, прежде чем возвращать какой-либо контент с помощью PrintWriter .
public void sendRedirect (String url)
Этот метод генерирует 302 ответ вместе с заголовком Location, содержащим URL нового документа
public void sendError (int code, String message)
Этот метод отправляет код состояния (обычно 404) вместе с коротким сообщением, которое автоматически форматируется внутри документа HTML и отправляется клиенту.
Пример кода состояния HTTP
Ниже приведен пример, который отправляет код ошибки 407 в клиентский браузер, и браузер покажет вам «Требуется аутентификация !!!» сообщение.
// Import required java libraries import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; // Extend HttpServlet class public class showError extends HttpServlet { // Method to handle GET method request. public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set error code and reason. response.sendError(407, "Need authentication!!!" ); } // Method to handle POST method request. public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
Теперь вызов вышеупомянутого сервлета будет отображать следующий результат —
type Status report
message Need authentication!!!
description The client must first authenticate itself with the proxy (Need authentication!!!).