Würde mir bitte jemand beschreiben, was genau eine HTTP-Entität ist ist?
Ich lese die HTTPClient-Dokumentation, verstehe aber nicht wirklich, was das bedeutet.
http
httpclient
Hallo
quelle
quelle
Antworten:
Eine HTTP-Entität ist der Großteil einer HTTP-Anforderung oder -Antwort, die aus einigen der Header und dem Body besteht, falls vorhanden. Es scheint sich um die gesamte Anfrage oder Antwort ohne die Anfrage- oder Statuszeile zu handeln (obwohl nur bestimmte Headerfelder als Teil der Entität betrachtet werden ).
Um zu zeigen; Hier ist eine Anfrage:
Und eine Antwort:
quelle
&
stattdessen verwenden&
. Ist das nicht auch eine Einheit? Was ist der Unterschied?&
ist eine HTML- Zeichenentitätsreferenz , nicht dasselbe wie eine HTTP-Entität .Hier sind 3 einfache Fälle:
Fall 1. Sie laden 3 Dateien in einer einzigen Anfrage hoch. Diese 3 Dateien sind 3 Entitäten. Jeder von ihnen hat seine eigenen
Content-Type
um anzugeben, um welche Art von Datei es sich handelt.Fall 2. Sie sehen eine Webseite. Der Browser hat eine HTML-Datei als Entität im Hintergrund heruntergeladen. Da die Seite kontinuierlich aktualisiert werden kann, erhalten Sie möglicherweise später eine völlig andere Entität.
Fall 3. Sie haben eine
304 Not Modified
. Es wurde keine Entität übertragen.Mit einem Wort, Entität ist eine optionale Nutzlast innerhalb einer http-Nachricht (entweder Anforderung oder Antwort), also eine " Teil-Ganz " -Beziehung zwischen Entität und Nachricht.
Einige Header - Felder gelten
Message
wieTransfer-Encoding
beschreiben , wie Nachricht zwischen Vermittlern übertragen, und kann somit von jeder Anwendung auf dem Request / Response - Kette (hinzugefügt oder entfernt werdenhop-by-hop headers
). Im Vergleich dazu gelten diese Headerfelder fürEntity
einige Eigenschaften, die die Größe, den Typ, den Komprimierungsalgorithmus usw. der Entität beschreiben.Weiterführende Literatur, zitiert aus RFC 2616, Abschnitt 1.4, 4.5 und 4.3:
message-body = Transfer-Encoding( Content-Encoding(entity-body) )
wo
Transfer-Encoding
kann "chunked" sein, was bedeutet, wie die Nachricht übertragen wird, undContent-Encoding
kann "gzip" sein, was für das Komprimieren der Entität steht.quelle
Es ist eine Abstraktion repräsentiert eine Anforderung oder Antwort Nutzlast . Das JavaDoc ist klar über seinen Zweck und verschiedene Entitätstypen.
quelle
Ich denke, der HTTPClient
Entity
ist nach HTTP- Entität benannt .quelle
HTTP ist ein Protokoll, das beim Zugriff auf Informationen von einem Remotecomputer über ein Netzwerk eingehalten wird. Normalerweise ist das Netzwerk Internet und der Remote-Computer ist ein Server.
Wenn Sie von Person A nach Person B um Informationen bitten, geben Sie ihm eine Nachricht. (Anfrage). Person B antwortet Ihnen (Antwort). Anforderung und Antwort sind HTTP-Nachrichtentypen.
Person A kann Person B bitten, etwas zu tun, anstatt nach Informationen zu fragen. Angenommen, Person A möchte, dass Person B eine Datei an einem sicheren Ort speichert. Person A übergibt diese Datei (HTTP-Entität) an Person B und fordert sie auf, etwas zu tun (HTTP-Nachricht). In diesem Fall übergibt die Person eine "Entität". Im Kontext der HTTP-Entität handelt es sich um eine mit der Nachricht verknüpfte Nutzlast.
Hoffe die Analogie hat geholfen.
quelle
Wie in einem Kommentar von @ hawkeye-parker erwähnt, scheint Entity veraltet zu sein. Wenn Sie in diesem RFC 2014 eine Suche durchführen , werden Sie Informationen zu XML-Entitäten und zum Nachrichtentext erhalten, jedoch nichts zu HTTP-Entitäten.
Trotzdem haben HttpClient, aber auch der JaxRS-Client eine
setEntity()
undgetEntity()
-Methode.In Anbetracht der akzeptierten Antwort sind beide Bibliotheken falsch!
HttpClient.setEntity()
zuvor gesetzte Header werden nicht entfernt.quelle
HttpEntity
ist das, was Sie in Request (mit Header) übergeben und was Sie in Response erhalten. Für Get Request übergeben wir einen einfachen StringFür die Post werden wir die komplette Entitätsklasse bestehen
quelle
Entität ist so etwas wie eine Nachricht, sie besteht aus einem Header, in dem Metadaten wie Ort, Sprache, Codierung ...
Und optional eines Körpers - der Inhalt wird wie in der Kopfzeile angegeben usw. formatiert
quelle
Unter den guten Antworten, die wir hier haben, sollte meines Erachtens etwas erwähnt werden, das direkt aus dem RFC 2616 (Hypertext Transfer Protocol - HTTP / 1.1) stammt :
Kurz gesagt: Eine Entität kann übertragen werden, und es kann sich um den Header + Body oder nur um den Header handeln .
Da es den obigen Link gibt, halte ich mich zurück, um zusätzliche Kommentare abzugeben.
quelle