Serwlety - kody stanu HTTP

Format żądania HTTP i wiadomości odpowiedzi HTTP jest podobny i będzie miał następującą strukturę -

  • Początkowy wiersz stanu + CRLF (powrót karetki + znak nowego wiersza, czyli nowa linia)

  • Zero lub więcej linii nagłówka + CRLF

  • Pusta linia, czyli CRLF

  • Opcjonalna treść wiadomości, taka jak plik, dane zapytania lub dane wyjściowe zapytania.

Na przykład nagłówek odpowiedzi serwera wygląda następująco -

HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
   (Blank Line)
<!doctype ...>
<html>
   <head>...</head>
   <body>
      ...
   </body>
</html>

Wiersz statusu składa się z wersji HTTP (w przykładzie HTTP / 1.1), kodu statusu (w przykładzie 200) i bardzo krótkiej wiadomości odpowiadającej kodowi statusu (w przykładzie OK).

Poniżej znajduje się lista kodów stanu HTTP i powiązanych komunikatów, które mogą zostać zwrócone z serwera internetowego -

Kod Wiadomość Opis
100 Kontyntynuj Tylko część żądania została odebrana przez serwer, ale dopóki nie zostanie odrzucona, klient powinien kontynuować żądanie
101 Przełączanie protokołów Serwer przełącza protokół.
200 dobrze Żądanie jest OK
201 Utworzony Żądanie zostało zakończone i został utworzony nowy zasób
202 Przyjęty Żądanie zostało przyjęte do przetwarzania, ale przetwarzanie nie zostało zakończone.
203 Informacje nieautorytatywne  
204 Brak zawartości  
205 Resetuj zawartość  
206 Częściowa zawartość  
300 Wiele możliwości wyboru Lista linków. Użytkownik może wybrać łącze i przejść do tej lokalizacji. Maksymalnie pięć adresów
301 Przeniesiony na stałe Żądana strona została przeniesiona do nowego adresu URL
302 Znaleziony Żądana strona została tymczasowo przeniesiona do nowego adresu URL
303 Zobacz inne Żądaną stronę można znaleźć pod innym adresem URL
304 Niezmodyfikowany  
305 Użyj proxy  
306 Nie używany Ten kod był używany w poprzedniej wersji. Nie jest już używany, ale kod jest zarezerwowany
307 Tymczasowe przekierowanie Żądana strona została tymczasowo przeniesiona do nowego adresu URL.
400 Zła prośba Serwer nie zrozumiał żądania
401 Nieautoryzowany Żądana strona wymaga nazwy użytkownika i hasła
402 Płatność wymagana Nie możesz jeszcze użyć tego kodu
403 Zabroniony Dostęp do żądanej strony jest zabroniony
404 Nie znaleziono Serwer nie może znaleźć żądanej strony.
405 Niedozwolona metoda Metoda określona w żądaniu jest niedozwolona.
406 Niedopuszczalne Serwer może tylko wygenerować odpowiedź, która nie została zaakceptowana przez klienta.
407 Wymagane uwierzytelnienie proxy Aby można było obsłużyć to żądanie, musisz uwierzytelnić się na serwerze proxy.
408 Limit czasu żądania Żądanie trwało dłużej, niż serwer był przygotowany do oczekiwania.
409 Konflikt Żądanie nie mogło zostać ukończone z powodu konfliktu.
410 Odszedł Żądana strona nie jest już dostępna.
411 Wymagana długość „Długość treści” nie jest zdefiniowana. Serwer nie przyjmie żądania bez niego.
412 Nie udało się spełnić warunku wstępnego Warunek wstępny podany w żądaniu uznany przez serwer za fałszywy.
413 Wymagana jednostka jest za duża Serwer nie przyjmie żądania, ponieważ jednostka żądania jest zbyt duża.
414 Adres URL żądania jest za długi Serwer nie przyjmie żądania, ponieważ adres URL jest za długi. Występuje po przekonwertowaniu żądania „post” na żądanie „get” z długimi informacjami o zapytaniu.
415 Nieobsługiwany typ nośnika Serwer nie przyjmie żądania, ponieważ typ nośnika nie jest obsługiwany.
417 Oczekiwanie nie powiodło się  
500 Wewnętrzny błąd serwera Żądanie nie zostało zakończone. Serwer spełnił nieoczekiwany warunek.
501 Nie zaimplementowano Żądanie nie zostało zakończone. Serwer nie obsługiwał wymaganej funkcjonalności.
502 zła Brama Żądanie nie zostało zakończone. Serwer otrzymał nieprawidłową odpowiedź z serwera nadrzędnego.
503 serwis niedostępny Żądanie nie zostało zakończone. Serwer jest tymczasowo przeciążony lub wyłączony.
504 Limit czasu bramy Upłynął limit czasu bramy.
505 Wersja HTTP nie jest obsługiwana Serwer nie obsługuje wersji „protokołu http”.

Metody ustawiania kodu stanu HTTP

Poniższych metod można użyć do ustawienia kodu stanu HTTP w programie serwletu. Te metody są dostępne z obiektem HttpServletResponse .

Sr.No. Metoda i opis
1

public void setStatus ( int statusCode )

Ta metoda ustawia dowolny kod stanu. Metoda setStatus przyjmuje jako argument int (kod stanu). Jeśli twoja odpowiedź zawiera specjalny kod statusu i dokument, pamiętaj, aby wywołać setStatus przed faktycznym zwróceniem jakiejkolwiek zawartości z PrintWriter .

2

public void sendRedirect(String url)

Ta metoda generuje odpowiedź 302 wraz z nagłówkiem Location podającym adres URL nowego dokumentu

3

public void sendError(int code, String message)

Ta metoda wysyła kod stanu (zwykle 404) wraz z krótką wiadomością, która jest automatycznie formatowana w dokumencie HTML i wysyłana do klienta.

Przykład kodu stanu HTTP

Poniżej znajduje się przykład, który wyśle ​​kod błędu 407 do przeglądarki klienta, a przeglądarka wyświetli komunikat „Potrzebujesz uwierzytelnienia !!!” wiadomość.

// 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);
   }
}

Teraz wywołanie powyższego serwletu spowoduje wyświetlenie następującego wyniku -

HTTP Status 407 - Need authentication!!!

type Status report

messageNeed authentication!!!

descriptionThe client must first authenticate itself with the proxy (Need authentication!!!).

Apache Tomcat/5.5.29