Qualcuno potrebbe descrivermi cosa è esattamente un'entità HTTP ?Che cosa è esattamente un'entità HTTP?
Sto leggendo la documentazione di HTTPClient, ma non capisco cosa significhi?
Qualcuno potrebbe descrivermi cosa è esattamente un'entità HTTP ?Che cosa è esattamente un'entità HTTP?
Sto leggendo la documentazione di HTTPClient, ma non capisco cosa significhi?
Un HTTP entity è la maggioranza di una richiesta o risposta HTTP, costituita da some of the headers e il corpo, se presente. Sembra essere l'intera richiesta o risposta senza la richiesta o la riga di stato (anche se solo certain header fields are considered part of the entity).
Per illustrare; ecco una richiesta:
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! ... # ┘
e una risposta:
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 ... # ┘
Grazie mille !!!!!!!!!! – helloThere
* Host * non è un campo dell'intestazione dell'entità. – Gumbo
Ho pensato che un'entità stesse usando '&' invece di '&'. Non è anche un'entità? Qual è la differenza? – CodyBugstein
Entity è qualcosa come un messaggio, si compone di intestazione, dove sono i metadati quali la posizione, lingua, codifica ...
e opzionalmente di un corpo - è contenuto viene formattato ecc come specificato nell'intestazione
È un'astrazione che rappresenta una richiesta o una risposta carico utile. Lo JavaDoc è chiaro sul suo scopo e vari tipi di entità.
+1 per chiamarlo "payload", che alla fine aggiunge un significato al termine vuoto ("entità"). –
Qui ci sono 3 casi semplici:
Caso 1. Si sta caricando 3 file in una singola richiesta. Questi 3 file sono 3 entità. Ognuno di loro ha il proprio Content-Type
per indicare che tipo di file è.
Caso 2. Si sta visualizzando una pagina Web. Il browser ha scaricato un file html come entità in background. Poiché la pagina potrebbe essere aggiornata continuamente, potresti ottenere un'entità completamente diversa in seguito.
Caso 3. Hai un 304 Not Modified
. Nessuna entità è stata trasferita.
In una parola, Entity è un payload facoltativa all'interno di un messaggio http (sia richiesta o risposta), quindi è una relazione "parte-tutto" tra le entità e il messaggio.
Alcuni campi di intestazione applicano a Message
come Transfer-Encoding
descrivono come trasferire messaggi tra intermediari, e quindi può essere aggiunto o rimosso da qualsiasi applicazione lungo la catena richiesta/risposta (hop-by-hop headers
). In confronto, tali campi di intestazione si applicano a Entity
sono alcune proprietà, che descrivono dimensioni, tipo, algoritmo di compressione, ecc ...
Ulteriori letture, citando da RFC 2616 sezione 1.4, 4.5 e 4.3:
request chain --------------------------------------> UA -----v----- A -----v----- B -----v----- C -----v----- O <------------------------------------- response chain
La figura sopra mostra tre intermediari (A, B, e C) tra l'agente utente e server di origine. Un messaggio di richiesta o risposta che percorre l'intera catena passerà attraverso quattro connessioni separate.
Ci sono alcuni campi di intestazione che hanno applicabilità generale sia per i messaggi di richiesta e di risposta, ma che non si applicano al l'entità essendo trasferito. Questi campi di intestazione si applicano solo a il messaggio viene trasmesso.
Codifica di trasferimento deve essere utilizzato per indicare qualsiasi trasferimento-codifiche applicati da un'applicazione per assicurare il trasferimento sicuro e corretto del Messaggio. Transfer-Encoding è una proprietà del messaggio, non dell'entità, e pertanto può essere aggiunta o rimossa da qualsiasi applicazione lungo la catena richiesta/risposta.
message-body = Transfer-Encoding(Content-Encoding(entity-body))
dove Transfer-Encoding
può essere "Chunked" che significa come trasferire il messaggio, e Content-Encoding
può essere "gzip" che indica come comprimere l'entità.
Wow, grazie per aver chiarito la relazione "parziale" tra entità e messaggio! Il resto è un po '"aggiunge alla confusione, ma nel complesso, vale ancora un upvote. Saluti! –
Come detto in un commento di @ hawkeye-parker, sembra che Entity sia stata deprecata. Crea un search in this 2014 rfc e vedrai le entità XML e il corpo del messaggio, ma nulla sull'entità Http.
Tuttavia, HttpClient, ma anche client JaxRS, hanno un metodo setEntity()
e getEntity()
.
Considerando la risposta accettata, entrambe le librerie sono sbagliate! HttpClient.setEntity()
non rimuoverà le intestazioni impostate in precedenza.
Ho trovato abbastanza utile la distinzione di "Entità" (e relativi "entità-intestazioni") e "Messaggio". Ciò diventa rapidamente evidente quando si progetta una libreria di rete e si esegue un'analisi di un messaggio HTTP e delle sue varie incarnazioni, ad es. un messaggio multipart. Sfortunatamente, le nuove RFC fondono queste "classi" distinte in una e abbiamo bisogno di introdurre la nostra terminologia o attenerci a "Entità". – CouchDeveloper
HTTP è un protocollo che viene osservato quando si accede alle informazioni da una macchina remota attraverso una rete. Di solito la rete è internet e la macchina remota è un server.
Quando chiedi informazioni dalla persona A alla persona B, gli dai un messaggio. (Richiesta). Persona B risponde a te (Risposta). La richiesta e la risposta sono tipi di messaggi HTTP.
La persona A può chiedere alla persona B di fare qualcosa, invece di chiedere informazioni. Supponi che la Persona A desideri che la Persona B archivi un file in un luogo sicuro.Quindi, la Persona A passa quel file (Entità HTTP) alla Persona B e gli chiede di fare qualcosa (Messaggio HTTP). In questo caso, la persona sta passando una "entità". Nel contesto di HTTP Entity, è un payload associato al messaggio.
Spero che l'analogia abbia aiutato.
Tra le buone risposte che abbiamo qui, credo che vale la pena di menzionare qualcosa che viene direttamente dal RFC 2616 (Hypertext Transfer Protocol - HTTP/1.1):
Entity
Request e Response messaggi possono trasferire un'entità se non altrimenti limitato dal metodo di richiesta o dal codice di stato della risposta. Un'entità consiste di di campi dell'entità dell'intestazione e un corpo dell'entità, sebbene alcune risposte includano solo le intestazioni dell'entità.
In poche parole: un'entità può essere trasferito, e può essere la intestazione + corpo, o solo il intestazione.
Dato che c'è il link sopra, mi fermo a fare commenti aggiuntivi.
L'intera risposta. – Mob
Sono arrivato da questo articolo su HTTP: [HTTP: Il protocollo che ogni sviluppatore Web deve conoscere] (http://net.tutsplus.com/tutorials/tools-and-tips/http-the-protocol-every-web -developer-must-know-part-1 /) se qualcun altro viene qui in cerca di informazioni sull'argomento. – Mason240
Si noti che il termine "entità HTTP" non appare più nelle [ultime specifiche HTTP 1.1] (http://tools.ietf.org/html/rfc7230). Sembra che sia stato deprecato. Ora possiamo solo usare "campi di intestazione" e "corpo del messaggio". –