¿Alguien podría describirme qué es exactamente una entidad HTTP ?
Estoy leyendo la documentación de HTTPClient, pero realmente no entiendo lo que eso significa.
http
httpclient
Hola a todos
fuente
fuente
Respuestas:
Una entidad HTTP es la mayor parte de una solicitud o respuesta HTTP, que consta de algunos de los encabezados y el cuerpo, si está presente. Parece ser la solicitud o respuesta completa sin la solicitud o la línea de estado (aunque solo ciertos campos de encabezado se consideran parte de la entidad ).
Para ilustrar; aquí hay una solicitud:
Y una respuesta:
fuente
&
lugar de&
. ¿No es eso también una entidad? ¿Cual es la diferencia?&
es una referencia de entidad de carácter HTML , no es lo mismo que una entidad HTTP .Aquí hay 3 casos simples:
Caso 1. Estás cargando 3 archivos en una sola solicitud. Esos 3 archivos son 3 entidades. Cada uno tiene el suyo
Content-Type
para indicar qué tipo de archivo es.Caso 2. Estás viendo una página web. El navegador ha descargado un archivo html como entidad en segundo plano. Dado que la página se puede actualizar continuamente, es posible que obtenga una entidad totalmente diferente más adelante.
Caso 3. Tienes un
304 Not Modified
. No se ha transferido ninguna entidad.En una palabra, la entidad es una carga útil opcional dentro de un mensaje http (ya sea una solicitud o una respuesta), por lo que es una relación " parte-todo " entre la entidad y el mensaje.
Algunos campos de cabecera se aplican a
Message
gustaríaTransfer-Encoding
describir la forma de transferencia de mensajes entre los intermediarios, y por lo tanto puede ser añadido o retirado por cualquier aplicación a lo largo de la cadena de petición / respuesta (hop-by-hop headers
). En comparación, esos campos de encabezado se aplican aEntity
algunas propiedades, que describen el tamaño de la entidad, el tipo, el algoritmo de compresión, etc.Lectura adicional, citando de RFC 2616 sección 1.4, 4.5 y 4.3:
message-body = Transfer-Encoding( Content-Encoding(entity-body) )
where
Transfer-Encoding
puede estar "fragmentado", que significa cómo transferir el mensaje, yContent-Encoding
puede ser "gzip", que significa cómo comprimir la entidad.fuente
Es una abstracción que representa una carga útil de solicitud o respuesta . El JavaDoc es claro sobre su propósito y varios tipos de entidades.
fuente
Supongo que HTTPClient
Entity
se nombra de acuerdo con la entidad HTTP .fuente
HTTP es un protocolo que se observa cuando se accede a información desde una máquina remota a través de una red. Por lo general, la red es Internet y la máquina remota es un servidor.
Cuando pides información de la persona A a la persona B, le das un mensaje. (Solicitud). La persona B le responde (Respuesta). La solicitud y la respuesta son tipos de mensajes HTTP.
La persona A puede pedirle a la persona B que haga algo, en lugar de pedir información. Digamos que la persona A quiere que la persona B almacene un archivo en un lugar seguro. Entonces, la Persona A pasa ese archivo (Entidad HTTP) a la Persona B y le pide que haga algo (Mensaje HTTP). En este caso, Person pasa una "Entidad". En el contexto de la entidad HTTP, es una carga útil adjunta al mensaje.
Espero que la analogía ayude.
fuente
Como se dijo en un comentario de @ hawkeye-parker, parece que Entity ha quedado obsoleto. Realice una búsqueda en este rfc de 2014 y verá sobre las entidades XML y el cuerpo del mensaje, pero nada sobre la entidad Http.
Sin embargo, HttpClient, pero también el cliente JaxRS, tienen una
setEntity()
ygetEntity()
método .Teniendo en cuenta la respuesta aceptada, ¡ambas bibliotecas están equivocadas!
HttpClient.setEntity()
no eliminará los encabezados establecidos previamente.fuente
HttpEntity
es lo que va a pasar en Solicitud (con encabezado) y lo que obtiene en Respuesta. Para Get Request, estamos pasando una cadena simplePara la publicación, vamos a aprobar la clase de entidad completa.
fuente
La entidad es algo así como un mensaje, consta de un encabezado, donde están los metadatos como ubicación, idioma, codificación ...
Y, opcionalmente, de un cuerpo: su contenido está formateado, etc., como se especifica en el encabezado
fuente
Entre las buenas respuestas que tenemos aquí, creo que vale la pena mencionar algo que viene directamente del RFC 2616 (Hypertext Transfer Protocol - HTTP / 1.1) :
En pocas palabras: una entidad puede ser transferida, y puede ser el encabezado + cuerpo , o solo el encabezado .
Dado que está el enlace de arriba, me detengo en hacer comentarios adicionales.
fuente