Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1401 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Exception étrange avec HttpURLConnection

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Exception étrange avec HttpURLConnection

n°917067
Bidem
Posté le 07-12-2004 à 15:06:17  profilanswer
 

Voir le code ci-dessous. Le problème est que si je fais un connexion.getContent(), la méthode getResponseCode() qui se trouve au dessus lève une exception alors que si le getContent() est mis en commentaire, aucune exception n'est levée..
 

Code :
  1. import java.io.IOException;
  2. import java.net.HttpURLConnection;
  3. import java.net.MalformedURLException;
  4. import java.net.URL;
  5. public class TestExceptionEtrange {
  6.   public static void main(String[] args) {
  7.     URL monUrl = null;
  8.     try {
  9.       monUrl = new URL("http://localhost:8080/cheminInvalide/" );
  10.       HttpURLConnection connexion = (HttpURLConnection) monUrl.openConnection();
  11.       connexion.connect();
  12.       System.out.println("Code Retour : " +connexion.getResponseCode());
  13.       System.out.println("Message :" + connexion.getResponseMessage());
  14.       // si la ligne suivante n'est pas en commentaire ça plante
  15.       //  de façon étrange !!!!
  16.       //connexion.getContent();
  17.     } catch (MalformedURLException e) {
  18.       e.printStackTrace();
  19.     } catch (IOException e) {
  20.       e.printStackTrace();
  21.     }
  22.   }
  23. }


 
Voici la trace de l'exception :

Code :
  1. Code Retour : 404
  2. Message :Introuvable
  3. java.io.FileNotFoundException: http://localhost:8080/cheminInvalide/
  4. at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:707)
  5. at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:238)
  6. at trash.TestExceptionEtrange.main(TestExceptionEtrange.java:25)


 
J'imagine qu'en fait c'est la méthode getContent() qui lève une exception mais dans ce cas, pourquoi dans la trace, ça me dit que c'est getresponseCode() ?  :??:  :??:  :??:

mood
Publicité
Posté le 07-12-2004 à 15:06:17  profilanswer
 

n°917162
sircam
I Like Trains
Posté le 07-12-2004 à 16:11:20  profilanswer
 

J'ai essayé ton programme chez moi, et en tout logique, ça plante sur "connect", puisque le chemin n'est pas valide. Il devrait en être de même chez toi.
 
Inversément, si je donne un chemin valide, tout marche ok, y compris le getContent.
 
TestExceptionEtrange.java:25 -> à quoi correspond la ligne 25 chez toi ?
 
Tu es sûr de ne pas t'être emmelé les pinceaux, des fois ?  :heink:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°917163
Bidem
Posté le 07-12-2004 à 16:11:29  profilanswer
 

Après quelques recherches sur le net, il semble pour récupérér le corps de la réponse getContent() n'est pas à conseiller, il vaut mieux récupérer l'InputStream par getInputStream() et le lire.
 
PS : Ca contourne mon problème mais juste par curiosité j'aimerais comprendre pourquoi l'exception que je récupérais était incohérente...
Le mystère reste entier

n°917187
Bidem
Posté le 07-12-2004 à 16:24:41  profilanswer
 

sircam a écrit :

J'ai essayé ton programme chez moi, et en tout logique, ça plante sur "connect", puisque le chemin n'est pas valide. Il devrait en être de même chez toi.
 
Inversément, si je donne un chemin valide, tout marche ok, y compris le getContent.
 
TestExceptionEtrange.java:25 -> à quoi correspond la ligne 25 chez toi ?
 
Tu es sûr de ne pas t'être emmelé les pinceaux, des fois ?  :heink:


 
J'avais oublié de préciser qu'il faut avoir un serveur d'appli en état de marche qui écoute le port 8080 (Tomcat par exemple).
 
TestExceptionEtrange.java:25 => ça correspond bien à l'appel de la méthode 'connexion.getResponseCode()'
Si il y a un décalage entre les numéros de lignes c'est que je n'ai pas copié les commentaires qu'il y a en début de mon fichier
 
pour rester cohérent voici la nouvelle trace d'execution :

Code :
  1. Code Retour : 404
  2. Message :Introuvable
  3. java.io.FileNotFoundException: http://localhost:8080/cheminInvalide/
  4. at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:707)
  5. at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:238)
  6. at trash.TestExceptionEtrange.main(TestExceptionEtrange.java:17)

n°917304
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 07-12-2004 à 18:57:09  profilanswer
 

Ba en même temps tu tentes un getContent() sur une réponse HTTP qui n'en a pas (de content), donc déjà, ça part mal [:spamafote]
Ensuite, dans la javadoc de getContent(), tu tombes sur " This method first determines the content type of the object by calling the getContentType method."
Ba pour une 404, je sais pas hein, mais ça m'étonnerait qu'il y ait un champ Content-Type dans le header HTTP.
De toute façon, j'ai pas la RFC de HTTP sous les yeux, mais ça m'étonnerait qu'il y ait un contenu ou un champ Content-Type dans une réponse serveur autre que 200.
 
Bref, vérifie dans la RFC ou dans un tuto HTTP quelque part et n'appelle getContent() que lorsque tu es certain d'avoir un contenu.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°918037
Bidem
Posté le 08-12-2004 à 15:50:15  profilanswer
 

Le problème, c'est pas qu'il y ait une exception mais que l'exception reçue est incohérente.
 
On dirait que getResponseCode() ne lève une exception que si on fait un getContent() après...

n°918164
benou
Posté le 08-12-2004 à 17:57:35  profilanswer
 

chez moi ca fait un FileNotFoundException même sans faire le getContent ...
 
bizarre, bizarre ...


Message édité par benou le 08-12-2004 à 17:57:48
n°918204
Bidem
Posté le 08-12-2004 à 18:42:06  profilanswer
 

Bon, comme personne n'arrive à reproduire le problème, j'imagine que c'est mon PC qui a mis un pied dans la 4ème dimension je ce n'est plus la peine de chercher à le comprendre :pt1cable:  
 
De toute façon, comme je l'ai dis dans mon 2ème post, j'ai fait en sorte de ne jamais tomber sur cette erreur.
 
On va dire que mon problème est "résolu" ...
 
Merci à tous pour vos efforts  :D


Message édité par Bidem le 08-12-2004 à 18:42:31
n°918453
benou
Posté le 08-12-2004 à 23:17:39  profilanswer
 

bidem a écrit :

Bon, comme personne n'arrive à reproduire le problème, j'imagine que c'est mon PC qui a mis un pied dans la 4ème dimension


perso, je trouve le comportement de ton prog sur mon pc assez étrange aussi : je vois pas pourquoi j eme mange une exceptino alors que j'essaye juste d elire le code d'une réponse http 404 ...
 
De toute façon, en générale, j'évite d'utiliser les HttpUrlConenction ... y a des clients HTTP bien mieux fait ...


---------------
ma vie, mon oeuvre - HomePlayer

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Exception étrange avec HttpURLConnection

 

Sujets relatifs
Macro d'Exception introuvable ds atlalloc.h pour app basic MFC[asm] difference interruption/exception
Générer un numéro ID selon l'exception.[Postgresql] Erreur étrange sur la création d'une procédure
Problème etrange dinit avec le ConfigurationType de Visual Studio ???[Struts] Je perds la stack trace avec le exception handler
Generer un nombre aléatoire à l'exception d'un ensemble d'entiers ?Exception et constructeur : Avis demandé
fputc : comportement étrangeErreur étrange avec KDevelop
Plus de sujets relatifs à : Exception étrange avec HttpURLConnection


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR