Médiaforma

All posts tagged http

Dans un site Web traditionnel (non AJAX), lorsque l’utilisateur demande l’affichage d’une nouvelle page, par exemple en cliquant sur un lien hypertexte, une requête http est envoyée au serveur. Ce dernier retourne une page HTML et des règles de mise en forme CSS qui sont interprétées dans le navigateur pour afficher la nouvelle page.

Dans un site Web qui exploite la technologie AJAX, il est possible de mettre à jour une partie d’une page et non la page entière. Le client envoie une requête http au serveur pour obtenir les données souhaitées. Les données sont envoyées au client. Ces données sont reçues par le client et le moteur AJAX les envoie dans l’élément qui doit les recevoir sans toucher au reste de la page.


Les éléments accessibles sur Internet ou sur l’Intranet d’une entreprise sont représentés par leur URL (Uniform Resource Locator). La syntaxe utilisée dans l’URL est fonction du protocole utilisé :

Protocole URL
http http://serveur:port/chemin?param1&param2&param3
ftp ftp://utilisateur:motDePasse@serveur:port/chemin
mail mailto:email
fichier local file://serveur/chemin

 

Pour accéder à un élément par son URL en Java, vous utiliserez les classes URL et URLConnection. Voici quelques-unes des méthodes utilisables :

Classe Méthode Objet de cette méthode
URL getProtocol() Partie protocole de l’URL
URL getHost() Partie hôte de l’URL
URL getPort() Port utilisé dans l’URL
URL getFile() chemin complet de l’URL
URL getUserInfo() Nom de l’utilisateur de l’URL, ou null si inexistant
URLConnection openConnection() Ouverture d’une connexion vers une URL
URLConnection openStream() Ouverture d’un flux de données en entrée
URLConnection getContentLength() Longueur du flux de données

Si vous insérez une adresse Web longue et/ou complexe dans un e-mail, un post Twitter, un message Facebook ou un article dans un blog ou un forum, les problèmes ne sont pas loin : l’adresse peut être coupée sur deux lignes car trop longue, et ne plus être fonctionnelle, ou les personnes qui l’utiliseront risquent de mal la recopier et d’atterrir sur une page inexistante.

Pourquoi ne pas utiliser un raccourcisseur d’URL Read more


Pour savoir si une connexion vers une URL qui utilise le protocole HTTP s’est bien déroulée, le plus simple consiste à faire appel à la méthode getResponseCode() ou getResponseMessage() de la classe HttpURLConnection.

Les codes de réponse retournés par la fonction getResponseCode() sont listés sur la page http://docs.oracle.com/javase/8/docs/api/java/net/HttpURLConnection.html. En voici quelques-uns :

 

Code Constante Signification
200 HTTP_OK Connexion réussie
408 HTTP_CLIENT_TIMEOUT Dépassement de délai dans l’exécution de la requête
404 HTTP_NOT_FOUND Fichier inexistant
500 HTTP_INTERNAL_ERROR Erreur interne sur le serveur

 

Voici un exemple d’utilisation des méthodes getResponseCode(), getResponseMessage() et des constantes de la classe HttpURLConnection  :

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class TesterConnexionHTTP {

    public static void main(String[] args) {
      URL uneURL=null;
      int ch;
      try {
        uneURL = new URL("https://lem.korp.free.fr/ReadMe.txt");
        HttpURLConnection connexion = (HttpURLConnection)uneURL.openConnection();
        InputStream flux = connexion.getInputStream();
        System.out.println("Status de la connexion : " + connexion.getResponseMessage());
        if (connexion.getResponseCode() == HttpURLConnection.HTTP_OK)
          while ((ch=flux.read())!= -1)
            System.out.print((char) ch);
        flux.close(); 
        connexion.disconnect();
      } 
      catch(Exception e) {
          System.out.println(e);
      }
    }
}