130 votes

Qu'est-ce qu'une entité HTTP?

est-ce que quelqu'un pourrait me décrire ce qu'est exactement une entité HTTP ? Je lis la documentation HTTPClient , mais je ne comprends pas vraiment ce que cela signifie?

Je vous remercie!!

152voto

maerics Points 47743

Un HTTP entité est la majorité de HTTP de la requête ou de la réponse, composé de certains des en-têtes et le corps, si elle est présente. Il semble être l'ensemble de la requête ou de la réponse sans la demande ou de la ligne d'état (bien que seulement certains champs d'en-tête sont considérés comme faisant partie de l'entité).

Pour illustrer, voilà une demande:

POST /foo HTTP/1.1          # Not part of the entity.
Content-Type: text/plain    # ┬ The entity is from this line down...
Content-Length: 1234        # │
                            # │
Hello, World! ...           # ┘

Et une réponse:

HTTP/1.1 200 OK             # Not part of the entity.
Content-Length: 438         # ┬ The entity is from this line down...
Content-Type: text/plain    # │
                            # │
Response body ...           # ┘

20voto

Anderson Points 652

Voici 3 cas simples:

Cas 1. Vous avez télécharger 3 fichiers en une seule requête. Ces 3 fichiers sont 3 entités. Chacun d'eux a sa propre Content-Type d'indiquer quel type de fichier il est.

Cas 2. Vous êtes en train de consulter une page web. Navigateur a téléchargé un fichier html comme entité en arrière-plan. Depuis la page pourrait être mis à jour en permanence, vous pouvez obtenir un tout autre entité plus tard.

Cas 3. Vous avez un 304 Not Modified. Aucune entité n'a été transféré.

En un mot, l'Entité est une option de charge utile à l'intérieur d'un message http(requête ou réponse), donc c'est une "partie-tout" de la relation entre l'Entité et le Message.

Certains champs d'en-tête s'appliquent Message comme Transfer-Encoding décrivent comment le transfert de messages entre les intermédiaires, et donc PEUT être ajouté ou enlevé par une application, le long de la requête/réponse de la chaîne(hop-by-hop headers). En comparaison, les champs d'en-tête s'appliquent Entity sont des propriétés qui décrivent l'entité de la taille, le type, l'algorithme de compression, etc...

Outre la lecture, citant la RFC 2616 la section 1.4, 4.5 et 4.3:

  • Une demande/réponse de la chaîne
     request chain -------------------------------------->
   UA -----v----- A -----v----- B -----v----- C -----v----- O
      <------------------------------------- response chain

La figure ci-dessus montre trois intermédiaires (A, B, et C) entre l'agent de l'utilisateur et le serveur d'origine. Une demande ou d'un message de réponse qui parcourt l'ensemble de la chaîne va passer par quatre connexions distinctes.

  • Champs d'en-tête, soit par Message ou de l'Entité

Il y a quelques champs d'en-tête qui ont une applicabilité générale de la demande et des messages de réponse, mais qui ne s'applique pas à l'entité transférée. Ces champs d'en-tête s'appliquent uniquement pour que le message soit transmis.

  • Champs d'en-tête de Message peut être modifié au long de la chaîne

Codage de transfert DOIT être utilisé pour indiquer tout transfert-codages appliquée par une application pour assurer la sécurité et la bonne transmission du message. Transfer-Encoding est une propriété de message, pas de l'entité, et donc PEUT être ajouté ou enlevé par une application, le long de la requête/réponse de la chaîne.

  • Relation entre le corps du message et le corps de l'entité

message-body = Transfer-Encoding( Content-Encoding(entity-body) )

Transfer-Encoding peut être "chunked", ce qui signifie la façon de transférer le message, et Content-Encoding peut être "gzip", qui signifie la façon de compresser l'entité.

12voto

Pangea Points 36713

C'est une abstraction représentant une charge utile de demande ou de réponse. Le JavaDoc est clair sur son objectif et ses différents types d’entités.

7voto

Riduidel Points 13456

Je suppose que HTTPClient Entity est nommé en fonction de l' entité HTTP.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X