Wiadomości HTTP
Wszystkie dane przesyłane między klientem i serwerem w specyfikacji nazwane są wiadomościami HTTP (HTTP Message). Wiadomość taka składa się z:
-
linii rozpoczynającej – dla zapytania – linia z nazwą metody, adresem zasobu i wersją protokołu, dla odpowiedzi (dla HTTP/1.0 i nowszych) – ze statusem i wersją protokołu;
-
opcjonalnych nagłówków HTTP (HTTP/0.9 ich nie wymaga);
-
opcjonalnego ciała wiadomości, które może składać się z wielu fragmentów zasobu (przy zapytaniu do serwera i odpowiedzi do klienta), lub zawierać wiele zasobów (przy zapytaniu klienta do serwera – np. wysłanie metodą POST kilku plików).
Do obsługi takich wiadomości została utworzona ogólna klasa, po której dziedziczą klasy do obsługi zapytań i odpowiedzi. Wewnątrz klasy ogólnej HTTPMessage znajduje się m.in. atrybut przechowujący nagłówki HTTP.
Do obsługi nagłówków HTTP utworzono również ogólną klasę, po której dziedziczą klasy dla nagłówków zapytania i odpowiedzi. Wewnątrz klasy ogólnej HTTPHeader przechowywana jest w formie tablicy asocjacyjnej (java.util.HashMap) lista nagłówków dla danego zapytania/odpowiedzi, wraz z ich wartościami. Klasa ta zawiera również metody pozwalające dodawać do tablicy kolejne nagłówki, pobierać wartości przechowywanych nagłówków oraz pobrać pełną listę nagłówków w formacie gotowym do wysłania do klienta. Dodatkowo klasa ogólna przechowuje pewien zestaw stałych publicznych, w których znajdują się nazwy nagłówków, w celu ich łatwiejszego przetwarzania (np. podczas pobierania wartości dla danego nagłówka, nie ma potrzeby wpisywać ręcznie taj wartości, zamiast tego można do metody pobierającą wartość przekazać taką stałą). Dziedziczące po HTTPHeader, klasy dla nagłówków zapytania i odpowiedzi dodają do tej listy stałych swoje kolejne, dozwolone nagłówki.
Serwer HTTP 