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 :

proxy en jsp marche pas avec images


Sujet :

Servlets/JSP Java

  1. #1
    Candidat au Club
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut proxy en jsp marche pas avec images
    Bonjour a tous

    J ai un petit probleme et je suis coince et je me permet de demande de l aide. Ce code est un proxy en jsp qui prend une url et en appelle une nouvelle. Ca marche avec un fichier mais ca ne marche pas avec les images. Pourquoi? Comment le faire marcher avec des images?

    merci beaucoup

    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
     
     
    <%@page session="false"%>
    <%@page import="java.net.*,java.io.*" %>
    <%
    try {
            if (request.getParameter("img") != null) {
                    
                    
                            
                    String strImage = request.getParameter("img"); 
                    String strURL = "un url en http"; 
                    
                    URL urlRequest = new URL(strURL);
                    HttpURLConnection httpConnection = (HttpURLConnection)urlRequest.openConnection();
            
                    httpConnection.setDoOutput(true);
                    httpConnection.setRequestMethod(request.getMethod());
                    int clength = request.getContentLength();
                    if(clength > 0) {
                            httpConnection.setDoInput(true);
                            byte[] idata = new byte[clength];
                            request.getInputStream().read(idata, 0, clength);
                            httpConnection.getOutputStream().write(idata, 0, clength);
                    }
     
                    response.setContentType(httpConnection.getContentType());
     
                    BufferedReader rd = new BufferedReader(new InputStreamReader(httpConnection.getInputStream()));
                    String line;
                    while ((line = rd.readLine()) != null) {
                            out.println(line); 
                    }
                    rd.close();
                    
                    
            
            
                    
            }
                    
    }catch(Exception e) {
            response.setStatus(500);
    }
    %>

  2. #2
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Bonjour,

    Pourrais-tu être plus précis? "Ça ne marche pas" nous aide peu à trouver le problème.

    Reçois-tu le status 500 ou aucune donnée n'est retournée?

    Cordialement

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Points : 338
    Points
    338
    Par défaut
    Bonjour,

    Il doit y avoir un problème car tu utilises le JspWriter out qui est fait pour écrire du texte alors qu'une image c'est généralement du binaire.

    Fais plutôt une copie binaire en utilisant un tableau de byte[] de httpConnection.getInputStream() vers response.getOutputStream() .

    D'ailleurs c'est déjà ce que tu fais de request.getInputStream() vers httpConnection.getOutputStream()

  4. #4
    Candidat au Club
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Plus precis
    Merci pour votre interet.
    Pour etre plus precis, le transfert en entree d'une page html se fait mais pas d'une image. Donc la jsp fonctionne mais ne fait pas le transfer d'image.

    Je pense qu'il y a effectivement un probleme de conversion quelque part du stream en fichier texte mais je ne suis pas un grand gourou de java.

  5. #5
    Candidat au Club
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut remplacer jsp writer
    gma quand tu fait allusion au jspwriter tu parles de la ligne

    httpConnection.getOutputStream().write(idata, 0, clength);

    Par quoi la remplacer?

    merci

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Points : 338
    Points
    338
    Par défaut
    Non cette partie m'a l'air ok. Ces plutôt les lignes suivantes qui ne vont pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    BufferedReader rd = new BufferedReader(new InputStreamReader(httpConnection.getInputStream()));
    String line;
    while ((line = rd.readLine()) != null) {
    	out.println(line); 
    }
    rd.close();
    Il faudrait écrire directement dans response.getOutputStream() à partir de ce qui est lu dans httpConnection.getInputStream() en lisant des tableaux de byte plutôt que des String

  7. #7
    Candidat au Club
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut convertir la sortie httpConnection.getInputStream()
    Bon je vois comment je peux envoyer un byte sur le getOutputStream

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    while(rs.next())
      {
    byte[] imgData =rs.getBytes("photo");
     response.setContentType("image/gif");
     OutputStream o = response.getOutputStream();
    o.write(imgData); 
    o.flush(); 
     o.close(); 
     }
    mais comment convertir la sortie httpConnection.getInputStream()

    Quelqu'un a une idee

    Merci

  8. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Points : 338
    Points
    338
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    InputStream inStream = httpConnection.getInputStream()
    try {
    OutputStream outStream = response.getOutputStream();
     
    byte[] buf = new byte[8192];
    int len;
    while ( (len=inStream.read(buf)) >= 0 ) {
    	outStream.write(buf, 0, len);
    }
    } finally {
    inStream.close();
    }

  9. #9
    Candidat au Club
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    5
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2011
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Ca marche
    Bon je remercie sincerement gma pour son aide, ca marche.

    Je met le code entier pour ceux que ca interesse.

    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
     
    <%@page session="false"%>
    <%@page import="java.net.*,java.io.*" %>
    <%
     
    //call http://localhost:8080/test/proxy.jsp?img=/test.png
                
    try {
          if (request.getParameter("img") != null) {
                
                String strImage = request.getParameter("img"); 
                String strURL = "http://localhost/" + strImage; 
                
                URL urlRequest = new URL(strURL);
                HttpURLConnection httpConnection = (HttpURLConnection)urlRequest.openConnection();
          
                response.setContentType(httpConnection.getContentType());
     
                InputStream inStream = httpConnection.getInputStream();
                try {
                OutputStream outStream = response.getOutputStream();
                
                byte[] buf = new byte[8192];
                int len;
                while ( (len=inStream.read(buf)) >= 0 ) {
                      outStream.write(buf, 0, len);
                      outStream.flush();
                      outStream.close();
                }
                } finally {
                inStream.close();
                }
    }
          
    }catch(Exception e) {
          response.setStatus(500);
    }
    %>

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

Discussions similaires

  1. Un .configure() qui ne marche pas avec l'argument 'image'
    Par moithibault dans le forum Tkinter
    Réponses: 1
    Dernier message: 05/12/2010, 03h23
  2. $_GET marche pas avec bouton image
    Par bob633 dans le forum Langage
    Réponses: 5
    Dernier message: 04/03/2010, 16h09
  3. Réponses: 4
    Dernier message: 29/05/2007, 17h04
  4. event.target marche pas avec les images
    Par tuxout dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 18/08/2006, 17h46
  5. Réponses: 4
    Dernier message: 21/06/2006, 16h09

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