Exception étrange avec HttpURLConnection - Java - Programmation
Marsh Posté le 07-12-2004 à 16:11:20
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 ?
Marsh Posté le 07-12-2004 à 16:11:29
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
Marsh Posté le 07-12-2004 à 16:24:41
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. |
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 :
|
Marsh Posté le 07-12-2004 à 18:57:09
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
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.
Marsh Posté le 08-12-2004 à 15:50:15
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...
Marsh Posté le 08-12-2004 à 17:57:35
chez moi ca fait un FileNotFoundException même sans faire le getContent ...
bizarre, bizarre ...
Marsh Posté le 08-12-2004 à 18:42:06
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
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
Marsh Posté le 08-12-2004 à 23:17:39
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 ...
Marsh Posté le 07-12-2004 à 15:06:17
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..
Voici la trace de l'exception :
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() ?