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

Services Web Java Discussion :

Web Service de flux XML


Sujet :

Services Web Java

  1. #1
    Membre régulier

    Profil pro
    Laveur
    Inscrit en
    Avril 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Laveur

    Informations forums :
    Inscription : Avril 2004
    Messages : 142
    Points : 81
    Points
    81
    Par défaut Web Service de flux XML
    Bonjour

    J'aimerai savoir comment un service web peux transmettre une flux XML ?
    Est ce que le return d'un org.w3c.dom.Document suffit et au client de traiter ?

    Un exemple serait fort apprécier

    Merci d'avance.

  2. #2
    Membre régulier

    Profil pro
    Laveur
    Inscrit en
    Avril 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Laveur

    Informations forums :
    Inscription : Avril 2004
    Messages : 142
    Points : 81
    Points
    81
    Par défaut
    UP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut
    Bonjour,
    il suffit d'utiliser un Writer xml pour convertir l'arbre en String et envoyer le contenu du flux xml dans la réponse http.

    Exemple pour convertir le DOM en String :
    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
     
    		try
    		{
    			DOMSource domSource = new DOMSource(message);
    			StringWriter writer = new StringWriter();
    			StreamResult result = new StreamResult(writer);
    			TransformerFactory tf = TransformerFactory.newInstance();
    			Transformer transformer = tf.newTransformer();
    			transformer.transform(domSource, result);
    			String stringResult = writer.toString(); 
    		}
    		catch (Exception e)
    		{
    			log.error(e.getMessage());
    		}
    où message est un document DOM

    Exemple de renvoi dans la réponse :
    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
     
    		String contentType = Constant.TEXT_XML;
    		String charset = request.getCharacterEncoding();
    		if (null != charset) {
    			contentType += Constant.CHARSET_EQUAL + charset;
    		}
    		response.setHeader(Constant.CONTENT_TYPE, contentType);
     
    		// prise en compte dans la taille de la réponse des caractères unicode de plus d'un octet
    		Charset charsetutil = null;
    		if (charset != null)
    		{
    			charsetutil = Charset.forName(charset);
    		}
    		else
    		{
    			charsetutil = Charset.forName("ISO-8859-1");
    		}
    	    ByteBuffer byteBuf = charsetutil.encode(xmlResponse);
    	    int size = 0;
    	    while (byteBuf.remaining()>0) 
    	    {
    		      byteBuf.get();
    		      size++;
    	    }
    		response.setHeader(Constant.CONTENT_LENGTH, "" + size); 
     
    		PrintWriter printwriter = null;
    		try {
    			printwriter = response.getWriter();
    			printwriter.write(xmlResponse);
     
    			response.flushBuffer();
    		} catch (Exception e) {
    			log.error(e);
            }
    où response est un HttpServletResponse

  4. #4
    Membre régulier

    Profil pro
    Laveur
    Inscrit en
    Avril 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Laveur

    Informations forums :
    Inscription : Avril 2004
    Messages : 142
    Points : 81
    Points
    81
    Par défaut
    Merci,

    J'ai pas très bien compris la suite, on récupère t on le "stringResult" ?
    En fait mon service renvoie un objet en réponse, c'est cette objet que je souhaiterai transformer en xml et renvoyer en flux


    Une autre question :

    J'ai deux service web en ligne. Ils prennent en paramètre un objet, il n'est donc pas possible que le tester en entrant l'url dans un navigateur ?

    Ou bien je dois modifier le service pour n'accepter que les int et String pour construire cet objet ?

    Merci encore

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut
    Citation Envoyé par mezoo Voir le message
    Merci,

    J'ai pas très bien compris la suite, on récupère t on le "stringResult" ?
    Bonjour,
    le stringresult servira à être envoyé dans le flux de la response.

    Citation Envoyé par mezoo Voir le message
    En fait mon service renvoie un objet en réponse, c'est cette objet que je souhaiterai transformer en xml et renvoyer en flux
    Il suffit d'utiliser un outil de mapping objet/xml style JAXB ou autre.

    Citation Envoyé par mezoo Voir le message
    J'ai deux service web en ligne. Ils prennent en paramètre un objet, il n'est donc pas possible que le tester en entrant l'url dans un navigateur ?

    Ou bien je dois modifier le service pour n'accepter que les int et String pour construire cet objet ?
    Cela dépend :
    - soit tu passes cela en paramètre de ta requête GET
    - soit tu passes l'objet au format xml dans la requête HTTP en type POST (et dans ce cas-là ce n'est pas testable directement avec un navigateur)
    - soit tu fais du SOAP RPC et tu intègres directement l'objet dans le SOAP Message.

    Question : tu as des WS Rest ou SOAP ?

Discussions similaires

  1. [RAD7][WS-RPC]Service de flux XML
    Par mezoo dans le forum Services Web
    Réponses: 1
    Dernier message: 25/02/2010, 17h26
  2. web service, datatable et XML
    Par jr972-95-7 dans le forum Services Web
    Réponses: 1
    Dernier message: 09/07/2009, 12h56
  3. Réponses: 2
    Dernier message: 04/04/2009, 10h17
  4. Axis Web Service avec flux en entrée
    Par natoine dans le forum Services Web
    Réponses: 4
    Dernier message: 11/03/2009, 00h18
  5. Interface Web service : (Serveur en XML, HTTP) et un client SOAP
    Par commande dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 09/03/2009, 19h28

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