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

Servlets/JSP Java Discussion :

[ImageIO.read] Can't get input stream from URL!


Sujet :

Servlets/JSP Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Points : 5
    Points
    5
    Par défaut [ImageIO.read] Can't get input stream from URL!
    Bonjour

    Ma WebApplication est bientôt terminé mais il reste une erreur.

    Context:
    Mon appli tourne sur un tomcat 6.0 sur mon pc sur le port 8080
    Cette appli utilise des images sur un serveur apache (EasyPHP) sur le port 80

    Je l'ai testé en réseau local, et cela fonctionne parfaitement.

    Mon problème:
    Aujourd'hui j'ai mis mon appli en ligne pour pouvoir la tester depuis un pc hors réseau local.
    Tout semble bien fonctionné sauf certaines images qui ne s'affiche pas.

    J'ai bien vérifier les path, je me suis assuré que l'image est accessible depuis internet.
    Finalement je pense avoir trouvé la source de mon problème. Les images qui posent problème sont récupérée par BufferedImage bi = ImageIO.read(url);

    J'obtiens l'erreur suivante:
    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
     
    exception 
     
    javax.imageio.IIOException: Can't get input stream from URL!
    	javax.imageio.ImageIO.read(Unknown Source)
    	servlets.Cortex.doGet(Cortex.java:46)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
    cause mère 
     
    java.io.FileNotFoundException: http://80.XXX.XXX.XXX/images/cortexHtml.png
    	sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    	java.net.URL.openStream(Unknown Source)
    	javax.imageio.ImageIO.read(Unknown Source)
    	servlets.Cortex.doGet(Cortex.java:46)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    J'avoue ne pas bien comprendre pourquoi cela fonctionne en local et non en ligne.

    Mon code:

    Voici l'une des servlet qui appelle une image:
    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
     
    	 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    	 {
    		 String valCortex = request.getParameter("cort");
    		 //String valCortex = "8";
    		 OutputStream out = response.getOutputStream();
    		 URL url = new URL(""+general.CheminsDAcces.pathImages+"cortexHtml.png");
    		 BufferedImage bi = ImageIO.read(url);
    		 Graphics g = bi.getGraphics();
    		 g.setColor(Color.black);
    		 g.setFont(new Font("Arial",1,32));
    		 //Pour un chiffre
    		 if(Integer.parseInt(valCortex)<10)
    		 {
    			 g.drawString(valCortex, 260, 156);
    		 }
    		 //Pour deux chiffres
    		 else
    		 {
    			 g.drawString(valCortex, 250, 156);
    		 }
     
    		 try
    		 {
    			 ImageIO.write(bi, "png", out);
    			 response.setContentType("image/png");
    			 System.out.println("CORTEX CA MARCHE");
    		 }
    		 catch (Exception e) 
    		 {
    			 System.err.println(e.toString());
    			 System.out.println("ERREUR CORTEX");
    		 }
    		 finally 
    		 {
    			 out.close();
    		 }
    	 }
    Et voici mes paths:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	public static String pathImages = "http://80.XXX.XXX.XXX/images/";
    	public static String pathApplication = "http://80.XXX.XXX.XXX:8080/ProfilsWeb/";
    	public static String pathDonnees = "http://80.XXX.XXX.XXX/";
    Peut être que quelqu'un a eu le même souci que moi?

    Merci d'avance

    Max

  2. #2
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut
    Tu as testé depuis internet mais as tu testé depuis la machine sur laquelle tourne tomcat?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    J'ai testé en local en rentrant une IP local, ça fonctionne.
    Par contre en local en utilisant l'ip 80.XXX.XXX.XXX mon programme ne s'ouvre pas du tout.

    Le problème vient en faite de l'objet URL qui accepte des ip local mais pas les ip web. Je ne comprends pas pourquoi.
    Pour l'instant j'ai trouvé une solution provisoire en remplacant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    URL url = new URL(""+mon_ip_web+"cortexHtml.png");
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File f = new File(""+mon_chemin_sur_DD+"cortexHtml.png");
    En mettant toutes mes images sur mon pc

    Je pense qu'une fois que j'aurai un nom de domaine l'URL ne posera plus de problème. Mais je voulais comme même tester avant d'acheter quoi que ce soit.

    Max

  4. #4
    Membre expérimenté
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Points : 1 403
    Points
    1 403
    Par défaut
    C'est quoi la différence entre une ip locale et une ip web ?????

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    80.XXX.XXX.XXX est l'ip de ton serveur ou l'ip de ton routeur ?

    Si c'est l'ip de ton routeur, il faudrait rediriger les requêtes de 80.XXX.XXX.XXX vers l'ip locale de ton serveur.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    l'ip web est celle de mon routeur (80.XXX.XXX.XXX). J'ai configuré ce dernier pour redirectionner les ports 80 et 8080 sur mon pc (en indiquant mon ip local 192.168.1.203).
    Cela marche puisque mon application affiche bien les autres images et accède bien à la BDD.

    Et j'ai bien accès aux images qui posent problème depuis l'extérieur (80.XXX.XXX.XXX/images/mon_images.png)

    Max

Discussions similaires

  1. javax.imageio.IIOException: Can't read input file!
    Par francky74 dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 07/04/2014, 11h04
  2. Erreur "JACOB Can't get object clsid from progid"
    Par Gaspard22 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 01/08/2012, 15h29
  3. Réponses: 10
    Dernier message: 31/05/2006, 16h15
  4. ERROR 13: Can't get stat of
    Par delph_b dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 28/07/2004, 14h23

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