IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ Fichiers, flux et réseauxConsultez toutes les FAQ

Nombre d'auteurs : 15, nombre de questions : 95, dernière mise à jour : 21 mars 2016  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur le forum Java de http://java.developpez.com ainsi que l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.

Sur ce, nous vous souhaitons une bonne lecture.

SommaireRéseauxHTTP (3)
précédent sommaire suivant
 

Pour faire cela, on doit construire l'adresse finale qui servira à créer un objet de type java.net.URL en y intégrant tous les paramètres de la requête. Ensuite, il faut récupérer l'instance de java.net.URLConnection correspondant à l'URL pour lire le contenu retourné par le serveur.

Par exemple :

Code Java : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public void doGET(String adresse) {  
    try { 
        // Creation de l’adresse de la requête. 
        String requete = adresse; 
        requete += String.format("?%s=%s ", 
                URLEncoder.encode("clef", "UTF-8"), 
                URLEncoder.encode("valeur", "UTF-8")); 
        requete += String.format("&%s=%s", 
                URLEncoder.encode("autreClef", "UTF-8"), 
                URLEncoder.encode("autreValeur", "UTF-8")); 
        URL url = new URL(requete); 
        // Création de la connexion. 
        URLConnection conn = url.openConnection(); 
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()))) { 
            // Lecture de la réponse. 
            String ligne; 
            while ((ligne = reader.readLine()) != null) { 
                System.out.println(ligne); 
            } 
        } 
    } catch (Exception ex) { 
        ex.printStackTrace(); 
    } 
}

Mis à jour le 28 août 2015 bouye

Pour faire cela, on doit créer un objet de type java.net.URL à partir de l'adresse du serveur. Ensuite, il faut récupérer l'instance de java.net.URLConnection correspondant à l'URL et la passer en mode écriture en invoquant sa méthode setDoOutput() avec la valeur true. Vous devez alors écrire tous les paramètres de la requête dans la connexion. Enfin, on utilisera cette même connexion pour lire le contenu retourné par le serveur.

Par exemple :

Code Java : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public void doPOST(String adresse) { 
try { 
    URL url = new URL(adresse); 
    // Création de la connexion. 
    URLConnection conn = url.openConnection(); 
    conn.setDoOutput(true); 
    try (OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream()); 
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()))) { 
        // Encodage des paramètres de la requête. 
        String donnees = String.format("%s=%s ", 
                URLEncoder.encode("clef", "UTF-8"), 
                URLEncoder.encode("valeur", "UTF-8")); 
        donnees += String.format("&%s=%s", 
                URLEncoder.encode("autreClef", "UTF-8"), 
                URLEncoder.encode("autreValeur", "UTF-8")); 
        // Envoi de la requête. 
        writer.write(donnees); 
        writer.flush(); 
        // Lecture de la réponse. 
        String ligne; 
        while ((ligne = reader.readLine()) != null) { 
            System.out.println(ligne); 
        } 
    } 
} catch (Exception ex) { 
    ex.printStackTrace(); 
}

Mis à jour le 28 août 2015 bouye Ioan

Il existe différentes façons pour établir une communication entre une applet et une servlet. Les deux méthodes suivantes ne sont pas propres aux servlets, et peuvent être aussi utilisées entre deux applications quelconques :



La méthode la plus proche du mode de fonctionnement d'une HttpServlet est une communication HTTP ; elle a l'avantage d'utiliser (en général) le port 80, et donc de franchir plus facilement les pare-feux. La requête HTTP de l'applet peut se faire soit par GET, soit par POST (multipart).

Client : envoi de données par GET
Code Java : Sélectionner tout
1
2
URL url = new URL("http://localhost/servlet?cle1=valeur1&cle2=valeur2"); 
URLConnection conn = url.openConnection();

Client : envoi de données par POST
Code Java : Sélectionner tout
1
2
3
4
5
6
7
URL url = new URL("http://localhost/servlet"); 
String data = "cle1=valeur1&cle2=valeur2"); 
URLConnection conn = url.openConnection(); 
conn.setDoOutput(true); 
try (OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream())) { 
    osw.write(data); 
}

Remarque : pour le passage des données (clés ou valeurs), si des caractères spéciaux sont employés, il faut utiliser URLEncoder :

Code Java : Sélectionner tout
1
2
String cle1 = [...] 
cle1 = URLEncoder.encode(cle1, "UTF-8")

Serveur : réponse de la servlet
Pour envoyer la réponse à partir de la servlet, il suffit d'utiliser l'OutputStream de l'HttpServletResponse.

Code Java : Sélectionner tout
1
2
3
4
String texte = [...] 
try (PrintStream out = new PrintStream(response.getOutputStream())) { 
    out.println(texte); 
}

Client : récupération de la réponse de la servlet
Code Java : Sélectionner tout
1
2
3
4
5
6
7
try (BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()))) { 
    String line; 
    while ((line = br.readLine()) != null) { 
        // Traitement des lignes. 
        [...] 
    } 
}

Mis à jour le 18 août 2015 Pierre-Yves VAROUX

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.