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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Java Discussion :

Requête HTTP POST sans réponse


Sujet :

Services Web Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 97
    Points : 64
    Points
    64
    Par défaut Requête HTTP POST sans réponse
    Bonjour,

    J'utilise un objet de type HttpURLConnection pour envoyer une requête HTTP méthode POST.

    Je souhaite envoyer ma requête mais ne pas attendre la réponse du serveur car sinon l'utilisateur est bloqué trop longtemps avant d'avoir la réponse (environ 20 secondes).

    Existe-t-il un paramètre pour faire cela ?

    Merci d'avance.

  2. #2
    Membre actif
    Avatar de karbos
    Inscrit en
    Novembre 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 155
    Points : 255
    Points
    255
    Par défaut
    Ce que tu veux faire s'appelle une requête asychrone. Ta réponse se trouve dans la technologie Ajax...

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Heu non, ajax c'est du javascript.

    Il faudrait déjà que tu nous précise ton contexte de travail. Ton code client, il est où? Sur une serveur web intermédiaire? Sur une application lourde (type swing)? Dans une application en ligne de commande?

    La stratégie va différer.

  4. #4
    Membre actif
    Avatar de karbos
    Inscrit en
    Novembre 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 155
    Points : 255
    Points
    255
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Heu non, ajax c'est du javascript.
    J'avais mal lu, pardon...
    Il n'y a pas des méthode setTimeOut() sur la classe HttpURLConnection ?

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 97
    Points : 64
    Points
    64
    Par défaut
    Bonjour à tous les deux,

    Merci pour vos réponses.

    Je développe sous Lotus une application web.
    Dans une page j'ai un bouton qui appelle un agent (=programme) JAVA qui se trouve sur mon serveur Lotus.

    Dans cet agent je lance une requête HTTP en méthode post.

    En fait je ne souhaite pas attendre la réponse.

    J'ai cherché un peu sur le web et effectivement le terme "asynchrone" revient souvent.

    Avez-vous une exemple pour faire de l'asynchrone en JAVA.

    Merci beaucoup votre aide.

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 97
    Points : 64
    Points
    64
    Par défaut
    voici mon code JAVA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
     
    	URL url = new URL("http://pharmaml.com/Commande.aspx");
     
    			HttpURLConnection connection=(HttpURLConnection) url.openConnection();
    			connection.setRequestMethod("POST");
    			connection.setUseCaches(false);
    			connection.setDoOutput (true);
    			connection.setDoInput(true);				
     
     
    			//HTTP Headers
    			connection.setRequestProperty("Content-Type", "text/xml;charset='utf-8'");
    			connection.setRequestProperty("Version-PharmaML", "3.0");
     
    			OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream ());
     
    			out.write("ma_chaine");	
    			out.flush();
    			out.close();
     
     
    			// réponse de Pharma-ML
    			BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
     
    			String line;
    			while(null != (line = in.readLine())) {
    				System.out.println(line);
    			}
     
    			in.close();
     
    			connection.disconnect();

  7. #7
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Je ne connais pas lotus notes et ses limitations. Il faut voir ce qu'il entends par "un programme java". Si on peux espérer que le jvm tourne en permanence et que c'est juste "une méthode" qui est appelée par lotus notes, tu peux prendre tout ton code et l'entourer par



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Thread t = new Thread(){
        public void run(){
             // ton code ici
        }
    }.start();
    Ca lancera l'exécution sur un thread séparé et donc ne bloquera pas l'actuel.

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Que de mauvais souvenirs avec le java dans Lotus Notes en ce qui me concerne
    Y-a-t-il toujours besoin d'appeler la méthode recycle() sur les objets afin que le serveur Domino daigne bien relacher les objets créés ?
    Tu peux, comme te l'a suggéré tchize, démarrer un nouveau Thread dans le corps de ton agent avec un code du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     
    public class JavaAgent extends AgentBase {
     
     public void NotesMain() {
     
       try {
     
           Thread t = new Thread(){
        		public void run(){
             		// ton code ici
        		}
    	}.start();
     
       } catch(Exception e) {
         e.printStackTrace();
       }
     }
    }
    Tiens nous au courant, je suis curieux de savoir si la gestion du java sous domino s'est améliorée.

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 97
    Points : 64
    Points
    64
    Par défaut
    Merci pour vos réponses !

    Pour répondre à ta question sur le recycle je ne sais pas trop.
    En fait je développe depuis toujours en Lotus Script.
    C'est le premier agent JAVA que je fais donc je bidouille un peu

    Je vous tiens au courant du résultat

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 97
    Points : 64
    Points
    64
    Par défaut
    J'ai mis le code tel quel dans mon agent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public class JavaAgent extends AgentBase {
     
     public void NotesMain() {
     
       try {
     
           Thread t = new Thread(){
        		public void run(){
             		// ton code ici
        		}
    	}.start();
     
       } catch(Exception e) {
         e.printStackTrace();
       }
     }
    }
    J'obtiens directement l'erreur "non concordances de types : impossible de convertir de void en Thread" sur cette ligne :
    Thread t = new Thread(){

    Savez-vous pourquoi ??
    Merci

  11. #11
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 250
    Points : 403
    Points
    403
    Par défaut
    Juste un petit soucis de syntaxe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Thread t = new Thread() {
                public void run() {
                    // ton code ici
                }
    };
    t.start();

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    J'ai l'impression que le compilateur de lotus notes est tout moisi :s C'est quelle version de lotus notes?

    Essaie ce code éventuellement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class JavaAgent extends AgentBase {
     
       public static class MyThread extends Thread {
        		public void run(){
             		// ton code ici
        		}
       }
     public void NotesMain() {
       try {
           new MyThread().start();
       } catch(Exception e) {
         e.printStackTrace();
       }
     }

    edit: a ben oui tiens, je devais pas être réveillé, je sais pas pourquoi j'ai voulu assigner le start ^^

  13. #13
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 97
    Points : 64
    Points
    64
    Par défaut
    Merci beaucoup, j'ai réussi grâce à votre aide.
    Bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoi de requête HTTP POST sans formulaire
    Par youpitralala dans le forum Langage
    Réponses: 3
    Dernier message: 02/09/2009, 17h57
  2. Requête HTTP POST sous .Net
    Par Médinoc dans le forum Framework .NET
    Réponses: 2
    Dernier message: 30/10/2007, 17h30
  3. [LINUX] Simuler une requête HTTP POST ou GET
    Par Anified dans le forum Linux
    Réponses: 1
    Dernier message: 05/02/2007, 16h11
  4. Comment effectuer une requête http post ?
    Par Turtle_fr dans le forum 4D
    Réponses: 10
    Dernier message: 07/09/2006, 01h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo