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

Développement Web en Java Discussion :

Modification du hash d'un document selon le get utilisé?


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Par défaut Modification du hash d'un document selon le get utilisé?
    Bonjour,

    J'essayais de récupérer un document avec ce 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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    try{
     
    			URL url = new URL(httpURL);
     
    			HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
     
    			urlConn.setRequestMethod("GET");
     
     
    			int statusCode = -1;
     
    			for (int attempt = 0; statusCode == -1 && attempt < 3; attempt++) {
    				try {
    					// execute the method.
    					urlConn.connect();
    					statusCode = urlConn.getResponseCode();
    				} catch (Exception e) {
    					throw new RuntimeException(e);
    				}
    			}
     
    			if (statusCode == -1) {
    				throw new RuntimeException("pas de réponse http : " + httpURL);
    			} else {
     
    				InputStream in = urlConn.getInputStream();
     
    				int aByte = 0;
    				ByteArrayOutputStream byas = new ByteArrayOutputStream();
    				while (aByte != -1) {
    					aByte = in.read();
    					byas.write(aByte);
    				}
     
    				byas.flush();
    				responseBody = byas.toByteArray();
     
    				byas.close();
    				in.close();
     
    			}
     
     
    		}
    		catch (Exception e)
    		{
     
     
    		}

    et je ne comprenais pas car le hash du document que j'envoyais ne correspondait pas au hash de ce que je recevais. Pourtant, le document s'affichait sans problème et était identique.

    Puis j'ai essayé en utilisant httpclient :
    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
    HttpClient client = new HttpClient();
     
    		HttpMethod method = new GetMethod(httpURL);
     
    		int statusCode = -1;
     
    		for (int attempt = 0; statusCode == -1 && attempt < 3; attempt++) {
    			try {
    				// execute the method.
    				statusCode = client.executeMethod(method);
    			} catch (Exception e) {
    				throw new RuntimeException(e);
    			}
    		}
    		// Check that we didn't run out of retries.
    		if (statusCode == -1) {
    			throw new RuntimeException("pas de réponse http : " + httpURL);
    		} else {
    			// Read the response body.
    			responseBody = method.getResponseBody();
     
    		}
    et la, la valeurdu hash est correcte.

    Quelqu'un pourrait-il m'expliquer ce comportement, ou s'il y a quelque chose que je fais mal pour la première méthode?

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 85
    Par défaut l'algo
    Salut,

    En regardant ton code je me demande si ta différence de hash ne vient du fait
    que le dernier read tu l'écris quand même malgrès qu'il n'est rien lu ? non ?
    Dans ce cas il faudra juste repenser un peu la boucle de lecture/écriture.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while (aByte != -1) {
    	aByte = in.read();
    	byas.write(aByte);
    }
    a+
    Xavier

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 10
    Par défaut
    Excellent, c'était bien ça, merci beaucoup pour l'aide!

    J'ai modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while (aByte != -1) {
    	aByte = in.read();
    	byas.write(aByte);
    }

    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    while (aByte != -1) {
     
    	aByte = in.read();
     
    	if(aByte!=-1)
    	{
    	byas.write(aByte);
    	}
     
    	}
    et maintenant ca marche nickel.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 85
    Par défaut bien
    Salut,

    Impeccable, sinon, une autre solution possible était :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    aByte = in.read();
    while (aByte != -1) {
    	byas.write(aByte);
    	aByte = in.read();
    }
    Dans l'absolu, c'est moins gourmant puisque le test sur le != -1 n'est
    fait qu'une seule fois.

    Bonne continuation.
    a+
    Xavier

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/02/2010, 20h45
  2. Edition document selon deux champs
    Par Basicnav dans le forum Excel
    Réponses: 1
    Dernier message: 23/11/2009, 09h22
  3. Générration document selon sélection sommaire
    Par StephaneGO dans le forum VBA Word
    Réponses: 3
    Dernier message: 13/11/2009, 00h02
  4. Réponses: 0
    Dernier message: 14/07/2009, 14h34
  5. Lucene : éliminer des documents selon la valeur d'un champ
    Par yannux dans le forum Zend Framework
    Réponses: 2
    Dernier message: 18/07/2008, 10h55

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