Java connection http

Résolu
k-23 Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   -  
k-23 Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je voudrais trouver un exemple simple sur java avec une connection http en fait je voudrais quelque chose comme ca.

Mon but c'est d'envoyer plusieurs donnees dans un meme port.(donc quelque chose dans le genre ("http://localhost/servlet?cle1=valeur1&cle2=valeur2");)

j'ai trouve ceci sur google, mais je trouve pas des exemple que je pourrais tester.

Merci pour l'aide

/** Envoi de données par GET */
URL url = new URL("http://localhost/servlet?cle1=valeur1&cle2=valeur2");
URLConnection conn = url.openConnection();

/** Envoi de données par POST */
URL url = new URL("http://localhost/servlet");
String data = "cle1=valeur1&cle2=valeur2");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream());
osw.write(data);
osw.flush();
osw.close();

/** Récupération de la réponse de la servlet */
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
/** traitement des lignes */
} br.close();

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

/** Réponse de la servlet */
String texte = "...";
PrintStream out = new PrintStream(response.getOutputStream());
out.println(texte);
out.close();

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

cle1 = URLEncoder.encode(cle1, "UTF-8")

1 réponse

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Pour tester il te faut un serveur qui gère les servlets (Tomcat par exemple).
    Voici un exemple de code qui envoie deux mots, et récupère la concaténation des deux.

    1) Le JavaScript fait une requête Get, il envoie les deux mots :

    var req;
    
    function envoieRequete(mot1,mot2)
    {
        req = new XMLHttpRequest();
        req.onreadystatechange = attendreReponse;
        req.open("Get","/MaServlet?mot1="+mot1+"&mot2="+mot2,true);
        req.send(null);
    }

    2) La servlet sur le serveur attend la requête, récupère les deux mots, fait la concaténation, et l'envoie en réponse:

    public class MaServlet extends HttpServlet
    {
        public void doGet(HttpServletRequest req, HttpServletResponse res)
        {
            String mot1 = req.getParameter("mot1");
            String mot2 = req.getParameter("mot2");
            
            String rep = mot1+mot2;
            
            res.setContentType("text/plain");
            res.setHeader("Cache-Control","no-cache");
            res.getWriter().write(rep);
        }
    }

    3) Et enfin le script reçoit la réponse et l'affiche :

    function attendreReponse()
    {
        if (req.readyState==4 && req.status==200)
        {
            alert(req.responseText);
        }
    }
    0
    1. k-23 Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   9
       
      salut merci de repondre mon but cest d<envoyer des donnee sur un meme port on ma dis que cest quelque chose de simple mais je le jamais vue on ma dis que javais juste a rentrer

      le port
      le http://localhost:8908 apres je definis mes variables les quelles je pourrais visualiser en ecribant dans mon navigateur internet http://localhost:8908 ...

      merci de repondre
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      C'est toi qui parlait de servlet avec ton http://localhost/servlet?cle1=valeur1&cle2=valeur2
      Elles sont utilisées dans des sites web, mais ce n'est peut-être pas vraiment ton problème...
      Peut-être qu'une manipulation de sockets te suffiront, regarde Les accès au réseau
      Mais si tu donnais plus d'informations sur ce que tu veux faire exactement ce serait plus facile de t'aider, car en Java on peut faire beaucoup de choses !!!
      0
    3. k-23 Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   9
       
      oui les sockets mais si jutilise les sockets je peut juste envoyer des donnees une a la fois alors que je veux envoyer deux donneee ou plus sur le meme port.

      je vais regarder le link voir si je trouve qqch

      merci
      0
    4. k-23 Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   9
       
      on mavait dis quil y avait une classe http que je dois utiliser
      0
    5. k-23 Messages postés 256 Date d'inscription   Statut Membre Dernière intervention   9
       
      tous ce que je veux ce envoyer des donnee sur un meme port en java

      je dois utiliser
      http://localhost:numeroDuPOrt avec quelque chose ????

      merci pour laide
      0