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 :

Problème Flux Rss/Servlet/Encodage


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 25
    Points : 16
    Points
    16
    Par défaut Problème Flux Rss/Servlet/Encodage
    Bonsoir à tous, j'aurais grandement besoin de conseil, car cela fait plusieurs jours que je tourne en bourrique sur mon problème, et il me faudrait des regards neuf pour soit trouver le souci soit pour m'aider à trouver de nouvelles pistes de test.

    Alors tout d'abord le contexte :

    J'ai un fichier Xml contenant mon flux Rss (modulo le nom de serveur final pour les <link/> ) que je passe dans une transformation Xslt (pour résoudre ce nom) via une servlet (qui me permet de connaître à l'instant T le nom de serveur)


    fichier flux.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="utf-8"?>
    <rss version="2.0">
    	<channel>
    		<title>Blabla titre</title>
    		<link>http://serveurXXX.fr</link>
    		<description>Ce flux annonce blabla</description>
    		<item>
    			<title>Blabla item title</title>
    			<link>http://serveurXXX/etc/etc/etc.html</link>
    			<description>Bla bla descri item</description>
    			<pubDate>Fri, 13 May 2011 16:08:43 GMT</pubDate>
    		</item>
    	</channel>
    </rss>
    Dans firefox/ie/chrome ce fichier est reconnu comme un flux rss mais les liens n'aboutisse pas (normal)

    J'ai donc crée une servlet qui vas faire la résolution de nom de domaine
    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
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    		throws IOException, ServletException{
     
    		String argument =request.getParameter("flux");
    		if (argument==null || argument ==""){
     
    			//response.setHeader("content-type", "text/xml");
    			//response.setHeader("content-type", "application/rss+xml");
    		   response.setContentType("application/rss+xml");
    		   response.setCharacterEncoding("UTF-8");
    			PrintWriter out = response.getWriter();
    			out.println("<h1>Pas d'argument renseigné</h1>");
    		}else{
     
    			processFluxParam(argument,request,response);
     
    			//test renvoie fic.xml non modif
    			//RequestDispatcher dispatch = request.getRequestDispatcher("/html/"+argument+".xml");
    			//dispatch.forward(request, response);
     
    		}
     
    	}

    Dans un premier temps je me contente de rediriger le flux.xml via la servlet (L18/19 en commentaire dans le doGet)

    Nickel, j'ai bien un flux rss à l'écran

    Ensuite je passe par avec la fonction processFluxParam

    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
    private void processFluxParam(String Flux,HttpServletRequest request, HttpServletResponse response)
    		throws IOException, ServletException{
     
    		String path = getServletContext().getRealPath("");
     
    		//BufferedReader leDocument = new BufferedReader(new InputStreamReader(new FileInputStream(path+"/html/"+Flux+".xml"),"UTF-8"));
    		//Source xml = new StreamSource(leDocument);
    		//StreamSource xml = new StreamSource(new File(path+"/html/"+Flux+".xml"));
    		StreamSource xml = new StreamSource(new FileInputStream(path+"/html/"+Flux+".xml"),"UTF-8");
    		PrintWriter out = response.getWriter();
    		javax.xml.transform.Transformer t = null;
    		try
    		{
    				TransformerFactory tFactory = TransformerFactory.newInstance();
    				Source xslSource = new StreamSource(new File(path+"/WEB-INF/xsl/"+"flux.xsl"));
    				t = tFactory.newTransformer(xslSource);
    				//t.setOutputProperty(javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION, "yes");
    				t.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "UTF-8");
     
    				t.transform(xml, new StreamResult(out));
    		}
    		catch (TransformerConfigurationException e)
    		{
    			e.printStackTrace();
    			throw new ServletException(e);
    		}
    		catch (TransformerFactoryConfigurationError e)
    		{
    			e.printStackTrace();
    			throw new ServletException(e);
    		}
    		catch (TransformerException e)
    		{
    			e.printStackTrace();
    			throw new ServletException(e);
    		}	
    	}
    + la feuille Xsl qui vas bien ( elle ne fait que recopier pour l'instant) flux.xsl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
     
    <xsl:template match="/">
        <xsl:copy-of select="*"/>
    </xsl:template>
    </xsl:stylesheet>
    Et c'est là que ça ce complique pour moi : j'ai deux souci

    1) J’ai un contenu équilavent à 100% au contenu du fichier flux.xml sauf que je n'ai pas l'affichage d'un flux Rss dans le navigateur sous Firefox/chrome Alors que sous ie 8 Oui c'est bien détecter en flux rss
    2) J’ai un problème d'encodage en UTF-8, en effet si je glisse un caractère du style ç/é/° dans mon flux.xml , à l'écran j'ai des ???? et sous IE le contenu n'est plus reconnu comme un flux Rss (Alors qui avec la simple redirection c'est bon aussi pour l'utf8)


    => Pour le 1) je ne vois vraiment pas pourquoi, ce que ma servlet renvoie n'es pas vu comme un flux rss

    => Pour le 2) j'imagine que lorsque je crée mon streamsource xml je passe en Iso ....


    Bref c'est là que je bloque.

    En tout cas merci d'être arrivé jusqu'au bout de ce pavé, j'espère que j'ai réussi à exposé mon problème. N'hésitez pas a me posé des questions.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    En bonus : voici des Screens shoot

    Ce que j'ai en consultant le fichier directement via le navigateur (




    ce que j'ai via ma servlet



    et le code source de cet affichage :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <rss version="2.0">
    	<channel>
    		<title>Blabla titre</title>
    		<link>http://serveurXXX.fr</link>
    		<description>Ce flux annonce blabla</description>
    		<item>
    			<title>Blabla item title</title>
     
    			<link>http://serveurXXX/etc/etc/etc.html</link>
    			<description>Bla bla descri item</description>
    			<pubDate>Fri, 13 May 2011 16:08:43 GMT</pubDate>
    		</item>
    	</channel>
    </rss>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    Serait-il possible de Copie le sujet dans la Section xml/xsl car j'ai ,sur des posts anglais, cru comprendre que le problème pourrais venir de la transformation d'xml en Flux rss via le Xsl.

    sinon je suis toujours bloqué :/

    Bonne journée

Discussions similaires

  1. Problème Flux RSS getElementsByTagName
    Par Official dans le forum Android
    Réponses: 2
    Dernier message: 20/03/2013, 15h45
  2. Flux Rss et encodage de caractère
    Par van-bom dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 25/04/2008, 20h35
  3. Problème flux RSS
    Par Bluedeep dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 3
    Dernier message: 09/04/2008, 21h36
  4. Problème pour récupérer flux RSS
    Par lolodelp dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 11/04/2006, 20h51
  5. problème flux rss
    Par K4trix dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/11/2005, 21h14

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