Czy ktoś mógłby mi opisać, czym dokładnie jest jednostka HTTP ?
Czytam dokumentację HTTPClient, ale tak naprawdę nie rozumiem, co to znaczy?
http
httpclient
helloThere
źródło
źródło
Odpowiedzi:
Jednostka HTTP to większość żądania lub odpowiedzi HTTP, składająca się z niektórych nagłówków i treści, jeśli występuje. Wydaje się, że jest to całe żądanie lub odpowiedź bez żądania lub wiersza stanu (chociaż tylko niektóre pola nagłówka są uważane za część jednostki ).
Ilustrować; oto prośba:
I odpowiedź:
źródło
&
zamiast&
. Czy to też nie jest byt? Co za różnica?&
to odwołanie do jednostki znakowej HTML , a nie to samo, co jednostka HTTP .Oto 3 proste przypadki:
Przypadek 1. Przesyłasz 3 pliki w jednym żądaniu. Te 3 pliki to 3 jednostki. Każdy z nich ma swój własny,
Content-Type
który wskazuje, jakiego rodzaju jest to plik.Przypadek 2. Przeglądasz stronę internetową. Przeglądarka pobrała w tle plik html jako jednostkę. Ponieważ strona może być aktualizowana w sposób ciągły, później możesz otrzymać zupełnie inną jednostkę.
Przypadek 3. Masz plik
304 Not Modified
. Żaden podmiot nie został przeniesiony.Jednym słowem, jednostka jest opcjonalnym ładunkiem wewnątrz wiadomości http (żądaniem lub odpowiedzią), więc jest to relacja „ częściowo w całości ” między jednostką a wiadomością.
Niektóre pola nagłówka odnoszą się do
Message
podobnych,Transfer-Encoding
opisują, jak przesyłać wiadomości między pośrednikami, a zatem MOGĄ być dodawane lub usuwane przez dowolną aplikację w łańcuchu żądań / odpowiedzi (hop-by-hop headers
). Dla porównania, te pola nagłówka mają zastosowanie doEntity
niektórych właściwości, które opisują rozmiar jednostki, typ, algorytm kompresji itp.Dalsza lektura, cytując z RFC 2616, sekcja 1.4, 4.5 i 4.3:
message-body = Transfer-Encoding( Content-Encoding(entity-body) )
gdzie
Transfer-Encoding
może być „podzielony na fragmenty”, co oznacza, jak przesłać wiadomość, iContent-Encoding
może być „gzip”, który oznacza, jak skompresować jednostkę.źródło
Jest to abstrakcja reprezentująca ładunek żądania lub odpowiedzi . JavaDoc jest jasne od jej celu i różnych typów jednostek.
źródło
Domyślam się, że HTTPClient
Entity
jest nazwany według jednostki HTTP .źródło
HTTP to protokół, który jest obserwowany podczas uzyskiwania dostępu do informacji ze zdalnej maszyny przez sieć. Zwykle sieć to Internet, a zdalna maszyna to serwer.
Kiedy prosisz osobę A o informacje do osoby B, przekazujesz jej wiadomość. (Żądanie). Osoba B udzieli odpowiedzi (odpowiedź). Żądanie i odpowiedź to typy wiadomości HTTP.
Osoba A może poprosić osobę B o zrobienie czegoś, zamiast prosić o informacje. Powiedzmy, że osoba A chce, aby osoba B przechowywała plik w bezpiecznej lokalizacji. Zatem osoba A przekazuje ten plik (jednostkę HTTP) osobie B i prosi ją o zrobienie czegoś (wiadomość HTTP). W tym przypadku Osoba przechodzi obok „Podmiotu”. W kontekście jednostki HTTP jest to ładunek dołączony do wiadomości.
Mam nadzieję, że ta analogia pomogła.
źródło
Jak powiedziano w komentarzu @ hawkeye-parker, wygląda na to, że jednostka Entity została wycofana. Dodać do poszukiwania w tym dokumencie RFC 2014 , a zobaczysz o podmiotach XML oraz treści wiadomości, ale nic o podmiocie HTTP.
Niemniej jednak HttpClient, ale także klient JaxRS, mają metodę
setEntity()
igetEntity()
.Biorąc pod uwagę zaakceptowaną odpowiedź, obie biblioteki się mylą!
HttpClient.setEntity()
nie usunie wcześniej ustawionych nagłówków.źródło
HttpEntity
jest tym, co zamierzasz przekazać w żądaniu (z nagłówkiem) i co otrzymujesz w odpowiedzi. Dla Get Request przekazujemy prosty ciąg znakówDo postu Zdamy pełną klasę Entity
źródło
Encja jest czymś w rodzaju wiadomości, składa się z nagłówka, w którym znajdują się metadane, takie jak lokalizacja, język, kodowanie ...
I opcjonalnie body - zawartość jest sformatowana itp. Zgodnie z nagłówkiem
źródło
Wśród dobrych odpowiedzi, które tu mamy, uważam, że warto wspomnieć o czymś, co pochodzi bezpośrednio z RFC 2616 (Hypertext Transfer Protocol - HTTP / 1.1) :
W skrócie: jednostka może zostać przeniesiona i może to być nagłówek + treść lub tylko nagłówek .
Ponieważ istnieje powyższy link, powstrzymuję się od robienia dodatkowych komentarzy.
źródło