Programmation JEE/Le protocole HTTP

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

Les clients JEE utilisent le protocole HTTP pour communiquer avec un serveur JEE. HTTP définit les demandes qu'un client peut envoyer à un serveur et les réponses que le serveur peut envoyer en réponse. Chaque demande contient une URL, qui est une chaîne qui identifie un composant Web ou d'un objet statique, comme une page HTML ou un fichier image.

Le serveur JEE convertit une requête HTTP à un objet de requête HTTP et la remet à la composante Web identifiées par l'URL de requête. Le composant Web remplit un objet de réponse HTTP, le serveur qui convertit en réponse HTTP et l'envoie au client.

Requêtes HTTP[modifier | modifier le wikicode]

Exemple :

GET /page.html HTTP/1.0
Host: example.com
Referer: http://example.com/
User-Agent: CERN-LineMode/2.15 libwww/2.17b3

Une requête HTTP se compose d'une méthode de requête, une URL de requête, les champs d'en-tête et un corps. HTTP 1.1 définit les méthodes demande suivante:

GET : Récupère la ressource identifiée par l'URL de requête
HEAD : Retourne les en-têtes identifiées par l'URL de requête
POST : serveur envoie: data illimité de la longueur de la Web
PUT : Magasins une ressource sous l'URL de requête
DELETE : supprime la ressource identifiée par l'URL de requête
OPTIONS : Retourne les méthodes HTTP le serveur prend en charge
TRACE : Retourne les en-têtes envoyés avec le TRACE demande

HTTP 1.0 ne comprend que le GET , HEAD et POST méthodes. Bien que les serveurs JEE sont seulement nécessaires pour soutenir le protocole HTTP 1.0, dans de nombreux serveurs pratique, y compris celle qui est contenue dans le SDK JEE, en charge HTTP 1.1.

Les réponses HTTP[modifier | modifier le wikicode]

Exemple :

HTTP/1.0 200 OK
Date: Fri, 31 Dec 1999 23:59:59 GMT
Server: Apache/0.8.4
Content-Type: text/html
Content-Length: 59
Expires: Sat, 01 Jan 2000 00:59:59 GMT
Last-modified: Fri, 09 Aug 1996 14:21:40 GMT

<TITLE>Exemple</TITLE>
<P>Ceci est une page d'exemple.</P>

Une réponse HTTP contient un code de résultat, les champs d'en-tête et un corps. Le protocole HTTP prévoit le code de résultat et de tous les champs d'en-tête à retourner avant tout le contenu du corps.

Certains codes d'état couramment utilisés sont les suivants:

200 : Indique que la ressource demandée à été trouvée
404 : Indique que la ressource demandée n'est pas disponible
401 : Indique que la demande requiert une authentification HTTP
500 : Indique une erreur dans le serveur HTTP qui a empêché de satisfaire la demande
503 : Indique que le serveur HTTP est temporairement surchargé, et incapable de gérer la demande

Contenu de la réponse[modifier | modifier le wikicode]

Le contenu de la réponse suit la liste des en-têtes HTTP. Sa taille peut être connue à l'avance et spécifiée dans le champ Content-Length. C'est le cas des fichiers envoyés directement comme réponse (HTTP statique).

Pour les réponses dynamiques (générées par un script par exemple), la taille n'est pas connue à l'avance. Le serveur peut stocker en mémoire le contenu afin de connaitre la taille. Cependant ce stockage doit avoir une limite afin de ne pas être à cours de mémoire pour les réponses dynamiques de grande taille.

Dans ce cas, si le client le supporte, le serveur peut utiliser l'encodage en morceaux (chunked). Le serveur ne spécifie pas la taille (donc pas de Content-Length spécifié), et fournit le contenu au client par morceaux de taille fixe spécifiée avant chaque morceau. Le dernier morceau comportant une taille nulle pour indiquer la fin de la réponse.