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

avec Java Discussion :

empêcher un Reader de lire s'il y a pas de réponse


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut empêcher un Reader de lire s'il y a pas de réponse
    Bonjour tout le monde j'ai un sérieux problème depuis longtemps et j'ai ouvert plusieurs discussions dessus.

    voilà mon code :

    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
    33
    34
    35
    36
        public static String getResponseQuery(String query) throws Exception {
        	String response = "";
        	URL fileURL;
    		try {
             int timeout = 20000;
     
    	fileURL = new URL(query);	
            URLConnection myConnection = fileURL.openConnection();
            myConnection.setReadTimeout( timeout );
     
     
            BufferedReader in = new BufferedReader(
                                    new InputStreamReader(
                                    myConnection.getInputStream()));
     
            String inputLine;
     
            //Thread.sleep(200000);
     
            while (in.ready() != true) {
            	System.out.println("Test in.ready() :" + in.ready());
            }
     
            while ((inputLine = in.readLine()) != null) {
            	response += inputLine;
            }
     
            in.close();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			System.out.println( e.toString());		
    		} 
     
    		);	
    		return response; 
        }
    mon problème est que lorsque le serveur distant commence le traitement d'une grosse requête j'obtiens une Exception de type IOException est ce qu'il y a un moyen de tester si InputStream n'est pa vide ?

    En fait comment je peux empêcher mon Reader de lire que lorsqu'il y a de reponse et que s'il y'en a pas il se mets en attente

    Merci

  2. #2
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    L'exception sur les pages longues vient probablement du timeout. Est ce que rallonger ça durée(ou mieux le mettre a 0) ne résout pas le problème?

    Sinon essaie d'être plus clair car j'ai du mal a comprendre ce que tu entends par:
    En fait comment je peux empêcher mon Reader de lire que lorsqu'il y a de reponse et que s'il y'en a pas il se mets en attente

  3. #3
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    Je suis désolé de ne pas être assez claire.

    Voilà d'où vient le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     URLConnection myConnection = fileURL.openConnection();
    InputStream iStream = myConnection.getInputStream();
    en fait lorsque je fais getInputStream() et qu'il est vide une IOException est levée, alors comment je peux tester qu'il n'est pas vide avant que je fasse getInputStream() ?

  4. #4
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Qu'appelles tu: "il est vide?". Tu as fait appel a une page qui n'existe pas? Tu as ouvert un fichier vide?

  5. #5
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    Voilà ce que je fait et qui marche très bien

    coté serveur :

    ostream & outS;

    outS << "Content-type: text/xml" <<endl;

    // résultat Traitement

    outS << résultat <<endl;


    et par la suite j'envoie mon outS au programme demandeur, qui a été invoqué par une URL.

    coté client :
    ça marche si le traitement est rapide sinon une exception coté java est déclenchée à cause de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myConnection.getInputStream();
    donc s'il y a un moyen de vérifier avant de faire .getInputStream()
    qui déclenche l'IOException.

    ou d'attendre jusqu'à la fin du traitement je serai preneur.

    à savoir que le programme demandeur est un programme propriétaire je n'ai que le .exe et il marche bien.

    il est tellemnt claire ce que je veux c'est juste de pouvoir tester avant de faire :

    myConnection.getInputStream();
    ou
    myConnection.getResponseCode();

    si je ne teste pas et qu'il est vide ça lève une exception voili voilo.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Par défaut
    si tu est sûr du comportement de ton application et de ton code.
    Pourquoi ne pas utiliser un try catch pour traiter l'exception?

    Bien sur cela ne t'empêcheras pas le tps de traitement.

  7. #7
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    Je vois bien ce que tu veux dire mais comment retourner pour récupérer le résultat après le traitement de l'exception ?

Discussions similaires

  1. [Video] OpenCV arrive à lire une vidéo AVI mais pas une autre
    Par Monsieur Griboux dans le forum Multimédia
    Réponses: 3
    Dernier message: 07/05/2016, 18h46
  2. Réponses: 3
    Dernier message: 04/08/2010, 14h05
  3. Empêcher la tabulation tant que la TextBox n'est pas saisie
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/07/2010, 22h14
  4. Lire un MP3 mais empêcher son téléchargement ?
    Par lepec dans le forum Apache
    Réponses: 1
    Dernier message: 19/07/2007, 20h31
  5. [HTML,CSS]Menu, lien.. lire svp je ne sais pas comment expliquer
    Par keishah dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 17/08/2006, 11h05

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