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

Format d'échange (XML, JSON...) Java Discussion :

Parsing SOAP dans un servlet


Sujet :

Format d'échange (XML, JSON...) Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 13
    Par défaut Parsing SOAP dans un servlet
    Bonsoir

    Voilà, je dois parser un POST reçu, qui contient du SOAP :
    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
    <soapenv:Envelope soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cwmp="urn:dslforum-org:cwmp-1-0">
     
     <soapenv:Header>
     
    	<cwmp:ID soapenv:mustUnderstand="1">7_THOM_TR69_ID</cwmp:ID>
     
    	 </soapenv:Header>
     
     <soapenv:Body>
     
    	<cwmp:Inform>
     
    	<DeviceId>
     
     
    ...
    Donc j'ai suivi le tuto de developpez.com (http://cynober.developpez.com/tutori...a/xml/jdom/#L3 , donc avec jdom / sax ) pour le parsing XML, ça marche impeccable.

    Mais pour le SOAP, rien ne passe. Je ne peux rien récupérer !
    Voire les commentaires de ce code :
    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
    private void debugDisplayParsedXML(HttpServletRequest request)
        {
        	Element racine =null;
        	org.jdom.Document document =null;
        
            SAXBuilder sxb = new SAXBuilder();
            try
            {
               document = sxb.build(request.getInputStream());           	
            }
            catch(Exception e){ e.printStackTrace();}
    
            //On initialise un nouvel élément racine avec l'élément racine du document.
            racine = document.getRootElement();
           
            logger.info("taille de Racine:"+racine.getContentSize());  // Ici j'obient 5 comme taille
            
    // ces deux lignes foire complètement : le getChildren ne retourne rien
            List listElement = racine.getChildren("soapenv"); 
            logger.info("Nombre d'enfants : "+listElement.size());
    
    // évidemment, le reste ne marche pas ^^
            Iterator i = listElement.iterator();
            while(i.hasNext())
            {
             
               Element courant = (Element)i.next();
         
               logger.info(" Nom : "+courant.getChild("").getText());
            }   	
        }
    Donc voilà, et en plus y'a vraiment pas grand chose '(voire rien) d'exploitable sur le net... Je suis bien tombé sur les librairies SOAPFactory, SOAPEnveloppe, mais j'ai trouvé aucun tuto permettant de les utiliser...

    Bref, j'implore de l'aide!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 13
    Par défaut
    Bon, j'ai avancé (je poste quand même, même si personne n'a l'air intéressé)
    Donc j'arrive à récupérer le SOAP entier (de <soapenv:enveloppe> à </soapenv:enveloppe>).

    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
     
     private void debugParseSOAP (HttpServletRequest request) 
        	throws IOException, SOAPException
        {
     
        	mH.addHeader("Content-Type", request.getContentType());    	    	
        	mH.addHeader("Content-Length", String.valueOf(request.getContentLength()));   	
        	mH.addHeader("Method", request.getMethod());   
     
        	SOAPMessage sm = MessageFactory.newInstance().createMessage(
        			mH,						 // Mime headers
        			request.getInputStream() // Content
        			);
        	debugDisplaySOAPMessage(sm);	
     
        	SOAPHeader header = sm.getSOAPHeader();
        	SOAPBody body = sm.getSOAPBody();
    le contenu de sm (le SOAP reçu, donc) est correctement affiché par la fonction debugDisplaySOAPMessage.

    Par contre, quand je veux récupérer le SOAPHeader et SOAPBody, ça se corse... Car quand je fais un .toString() des deux variables (body et header), ça me retourne null.
    Et quand j'essaye de faire le moindre traitement aussi.

    Quelqu'un a une idée?

Discussions similaires

  1. [applet]utilser des infos pour les traiter dans une servlet
    Par jeromejanson dans le forum Applets
    Réponses: 5
    Dernier message: 07/03/2010, 23h22
  2. [webservices] heberger un webservices dans une servlet ?
    Par n!co dans le forum Services Web
    Réponses: 14
    Dernier message: 07/12/2005, 14h44
  3. [Session]Récupération d'une session dans une servlet
    Par frizby dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 18/11/2005, 17h02
  4. [débutante]Probleme de liens image dans JSP/Servlet
    Par celine31 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 24/11/2004, 15h51
  5. [Servlet][Compilation] Erreur de compil dans code servlet
    Par gandalf_le_blanc dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 13/05/2004, 10h17

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