Aller au contenu | Aller au menu | Aller à la recherche


AXIS lire le contenu du message SOAP HTTP

Comment afficher le contenu SOAP : enveloppe (Envelope), entêtes (Header), corps (Body) et attachements (Attachments) binaires , lors de l'envoi d'un WebService (WS) et de sa réponse ?

Pour détailler le flux SOAP on les choix suivants :

Java code

Dans le stub (SoapBindingStub), lors de l'appel (call) d'un service (méthode)

System.err.println("RequestMessage MessageType:"+_call.getMessageContext().getRequestMessage().getMessageType());
            	System.err.println("RequestMessage SOAPEnvelope:"+_call.getMessageContext().getRequestMessage().getSOAPEnvelope());
            	System.err.println("RequestMessage SOAPHeader:"+_call.getMessageContext().getRequestMessage().getSOAPHeader());
            	System.err.println("RequestMessage SOAPBody:"+_call.getMessageContext().getRequestMessage().getSOAPBody());
            	System.err.println("RequestMessage SOAPPartAsString:"+_call.getMessageContext().getRequestMessage().getSOAPPartAsString());
 
            	System.err.println("ResponseMessage MessageType:"+_call.getMessageContext().getResponseMessage().getMessageType());
            	System.err.println("ResponseMessage SOAPEnvelope:"+_call.getMessageContext().getResponseMessage().getSOAPEnvelope());
            	System.err.println("ResponseMessage SOAPHeader:"+_call.getMessageContext().getResponseMessage().getSOAPHeader());
            	System.err.println("ResponseMessage SOAPBody:"+_call.getMessageContext().getResponseMessage().getSOAPBody());
            	System.err.println("ResponseMessage SOAPPartAsString:"+_call.getMessageContext().getResponseMessage().getSOAPPartAsString());
RequestMessage MessageType:null
RequestMessage SOAPEnvelope:<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ServiceWeb xmlns="urn:www.placeoweb.com"><in0><ns1:dateEnvoi xmlns:ns1="http://echangee.www.placeoweb.com">2010-04-16T09:04:15.437Z</ns1:dateEnvoi><ns2:devis xmlns:ns2="http://echangee.www.placeoweb.com"><ns2:client><ns2:batiment xsi:nil="true"/><ns2:codePostal xsi:nil="true"/> ... </in0></ServiceWeb></soapenv:Body></soapenv:Envelope>
RequestMessage SOAPHeader:
RequestMessage SOAPBody:<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><ServiceWeb xmlns="urn:www.placeoweb.com"><in0><ns1:dateEnvoi xmlns:ns1="http://echangee.www.placeoweb.com">2010-04-16T09:04:15.437Z</ns1:dateEnvoi><ns2:devis xmlns:ns2="http://echangee.www.placeoweb.com"><ns2:client><ns2:batiment xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/><ns2:codePostal xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/> ... </in0></ServiceWeb></soapenv:Body>
RequestMessage SOAPPartAsString:<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ServiceWeb xmlns="urn:www.placeoweb.com"><in0><ns1:dateEnvoi xmlns:ns1="http://echangee.www.placeoweb.com">2010-04-16T09:04:15.437Z</ns1:dateEnvoi><ns2:devis xmlns:ns2="http://echangee.www.placeoweb.com"><ns2:client><ns2:batiment xsi:nil="true"/><ns2:codePostal xsi:nil="true"/> ... </in0></ServiceWeb></soapenv:Body></soapenv:Envelope>
ResponseMessage MessageType:response
ResponseMessage SOAPEnvelope:<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ServiceWebResponse xmlns="urn:www.placeoweb.com"><ServiceWebReturn><ns1:dateRetour xmlns:ns1="http://echangee.www.placeoweb.com">2010-04-16T08:59:33.977Z</ns1:dateRetour></ServiceWebReturn></ServiceWebResponse></soapenv:Body></soapenv:Envelope>
ResponseMessage SOAPHeader:
ResponseMessage SOAPBody:<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><ServiceWebResponse xmlns="urn:www.placeoweb.com"><ServiceWebReturn><ns1:dateRetour xmlns:ns1="http://echangee.www.placeoweb.com">2010-04-16T08:59:33.977Z</ns1:dateRetour></ServiceWebReturn></ServiceWebResponse></soapenv:Body>
ResponseMessage SOAPPartAsString:<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ServiceWebResponse xmlns="urn:www.placeoweb.com"><ServiceWebReturn><ns1:dateRetour xmlns:ns1="http://echangee.www.placeoweb.com">2010-04-16T08:59:33.977Z</ns1:dateRetour></ServiceWebReturn></ServiceWebResponse></soapenv:Body></soapenv:Envelope>

Logger

Lancer votre programme avec un logger log4j, avec les arguments et fichier suivants :

-Dlog4j.configuration="file:/C:/workspaceEclipse/log4j/log4j.properties"

log4j.properties :

#http://beuss.developpez.com/tutoriels/java/jakarta/log4j/
#http://wiki.mediabox.fr/tutoriaux/java/log4j

#définition du niveau et des Appender du rootLogger
log4j.rootLogger=DEBUG, monAppender, stdout
 
#configuration de "monAppender"
#nous allons envoyer les messages dans la console de Tomcat
log4j.appender.monAppender=org.apache.log4j.ConsoleAppender
#log4j.appender.monAppender=org.jboss.logging.log4j.ConsoleAppender
 
#définition du Layout pour "monAppender"
log4j.appender.monAppender.layout=org.apache.log4j.PatternLayout
 
#définition du pattern d'affichage pour "monAppender"
#voici un exemple de sortie que l'on va obtenir : 2005-06-18 14:53:37 DEBUG [Main] Hello World
log4j.appender.monAppender.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} %m%n
#log4j.appender.monAppender.layout.ConversionPattern=%c{1} %m%n

# Si par exemple je veux modifier le niveau de logging des classes se trouvant 
# dans le package com.liguo.layout, 
# je n'ai qu'a ajouter la ligne suivante dans le fichier de configuration
#log4j.logger.com.liguo.layout=WARN
log4j.logger=INFO
log4j.logger.com=ALL
log4j.logger.com.placeoweb=ALL
log4j.logger.org=INFO
#log4j.logger.org=ALL
#log4j.logger.org.apache.axis.transport.http.HTTPSender=DEBUG, axisLogFile
log4j.logger.org.apache.axis.transport.http.HTTPSender=DEBUG

Résultat du log :

2010-04-16 11:13:54 DEBUG [HTTPSender] Enter:  HTTPSender::invoke
2010-04-16 11:13:55 DEBUG [HTTPSender] XML sent:
2010-04-16 11:13:55 DEBUG [HTTPSender] ---
2010-04-16 11:13:55 DEBUG [HTTPSender] POST /uri/services/ServiceWeb HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.4
Host: 81.255.92.77
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Content-Length: 5025

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ServiceWeb xmlns="urn:ww.placeoweb.com"><in0><ns1:dateEnvoi xmlns:ns1="http://echangee.ww.placeoweb.com">2010-04-16T09:13:54.015Z</ns1:dateEnvoi> ... </in0></ServiceWeb></soapenv:Body></soapenv:Envelope>
2010-04-16 11:14:03 DEBUG [HTTPSender] HTTP/1.1 200 OK
2010-04-16 11:14:03 DEBUG [HTTPSender] Date Fri, 16 Apr 2010 09:13:21 GMT
2010-04-16 11:14:03 DEBUG [HTTPSender] Server Apache
2010-04-16 11:14:03 DEBUG [HTTPSender] Set-Cookie SMSESSION=9GXw3KrdlN7NIk8+gZV3P6MRgo1loLn/b7QDRLz0kowRUqvH8LVlA+rMSZgkLkGcD10eq9F+A4QuEbxMg3ZYpuY/3WbglJ9cZwd1/BxKHPasFS27pbgWXcEO54k/NqsDhKh6+2gf/hy6QtvfA2NVwTbxWihJzLZwAHyLYyRTVAvVieIlgPHLV/AVBSEkQ+ra7eqJAouaRXzU29HkPQP/2HQ/SL9OHF1TwKwQlaO7Rx91DQLmL6xKE4diDnWp2vU5/qYDXyGLgaQNbtAfATSlwvbTqyWcRwCLl8nE8MwpsDDW2PjDVVtQCx8gDl7Z+Q/Q/NqOKEBq6MGrfYDqdmlD5t59JY/okh1ZvkFDpFJ79El7PpJUvRXn9jR3GwwD8IMd2/0rxN2No2luUVqn+z8pVN3lQugIb2yp9dGGfJ56I2ASoWuS8NIAIVJCgrR7Ehs2EOGyIAhxZt5qkouJioOgL7BQlteby5QA/FM7D99NNjMXXXqdk2tboFfBUlqG+Vd4HKvkwQHV0OeiQvtJ3+Utinh1QffLyNwp4yI6sY2mLuXydkcXQqhdd6WSgNSGebwUHhDNn/uAqM7KoZAgny8oP3jKZW/xZItVJZyLYY4HHevSqZH3OcFAT4jZ0jCbnnRmjiA7QKzvzn5S8zMNMIOTRgcD7s682ra0yBlXjR8bu/W7jFmabntvzp5z/0+Lp3LrJIHqffpSWPPBqcsypUzObQYgJ/6QOCx6u7+JUFZ4X166rD6iFouLTmcFPiddDOGo1nRh+mS5dZJUD7DqQO+Umv3OEwhlPLr81HoTm4P7wwNe5HY0QejB8oImwcwEcr03TdrCww8BBbX3kbMgaYtGNS6Ylm9DDp5OZ9eb3j/qVIgJArwPn04k1fjWzYqa2aS4btd0q1uPOZ06MganCnQgKfGbKICEWKhnzyIEBURAOoYUa7eOi2mcaJVKC/1I+YrPqF/1rXZLA8bSnZkza53uI0P+1WMSykpxMHvTcVQv+a1I9mVsV4mOlrDL8bUOmn8EYUl0Dvuh2LEJ7zxtFXL2W5JsfayXfNX5udeYhK6vZhzap6KgekVCKqxPl508f6WB; path=/; domain=.placeoweb.fr
2010-04-16 11:14:03 DEBUG [HTTPSender] Set-Cookie SMIDENTITY=/VM8ZHqqahrH02D32mkQqNVBVRcu5qwh5QN6GjwIufsUqg5X92oiYLXmQmeBy49l4yrZMuk7XD5ONlThv4RkbAvK61FL8KEIY7ErcelxLWkeRhNM48N8Apyz2E+/CY91+DbWI+5YP+CBgy0cztJadvVMf5bppSica8v7CPUYzvUqEoIg9kQVrnvaGs90eoCHnAXe4YyrQEalKM1C5rDCsAd43E299+yg8lTRrwWQERP6Cq1OMe/5Ndhuhvmlsv4TT5pMdj9fRJWSN2Y9uwcRFVg0zk3hnMp4zw+D7XUdNwmzGyQzZbPENyIM5IszBejRzWWDn/8YOZ4Fbpo9y+7A1xnPfmTeW2Wp1EUhSU4Yf0FXn9H4pfmi9HqkC0/LrcwG8reHRB2s3Clu3kWvOFXHIaDZOHSja2JcvbfAGUCQUfaEAtAFUjktTdt4h82b7Vcqnbg97hNNPrFL4/5LP+pzk1Tfyv1vgF6tjIcgykwikXjoT52FTEdMB1fNW+isRD/NNmNpjAiXtXceIeo0qTgsqw5nUQ2hwYTxOC8TgBy1fLbP5EnoTw3SNNlXSNfTJUgWCeMCCg423KbiyiT7c9BK3hEgFtBz20blc/ee7bY6os+vYg+uwswyeyGJjWP9BuNG0vXopyIapSkcVLIS8DqR7umv1ANiym9zv+XuOChzTZInIm/Z0G+QvuoXJKLhc5+M; path=/; domain=.placeoweb.fr
2010-04-16 11:14:03 DEBUG [HTTPSender] Content-Type text/xml
2010-04-16 11:14:03 DEBUG [HTTPSender] Via 1.1 b2b-internet-soap-xmlfirewall
2010-04-16 11:14:03 DEBUG [HTTPSender] Warning 214 b2b-internet-soap-xmlfirewall DataPower Transformation Applied
2010-04-16 11:14:03 DEBUG [HTTPSender] Connection close
2010-04-16 11:14:03 DEBUG [HTTPSender] 
no Content-Length
2010-04-16 11:14:03 DEBUG [HTTPSender] 
XML received:
2010-04-16 11:14:03 DEBUG [HTTPSender] ---
2010-04-16 11:14:03 DEBUG [HTTPSender] <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><ServiceWebResponse xmlns="urn:ww.placeoweb.com"><ServiceWebReturn><ns1:dateRetour xmlns:ns1="http://echangee.ww.placeoweb.com">2010-04-16T09:09:20.933Z</ns1:dateRetour> ... </ServiceWebReturn></ServiceWebResponse></soapenv:Body></soapenv:Envelope>
2010-04-16 11:14:03 DEBUG [HTTPSender] Exit:  HTTPDispatchHandler::invoke

Loguer sous Jboss les appels client Axis (émetteurs requête et réponse )

Jboss 4 : Loguer sous Jboss 4 les appels client Axis (émetteurs requête et réponse )

<!-- ==================== -->
   <!-- APPENDER DE WS AXIS  -->
   <!-- ==================== -->
   <appender name="AXIS_WS" class="org.jboss.logging.appender.RollingFileAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="File" value="${jboss.server.home.dir}/log/axis.ws.log"/>
      <param name="Append" value="true"/>
      <!--<param name="DatePattern" value="'.'yyyy-MM-dd"/>-->
      <param name="MaxBackupIndex" value="10"/>
      <param name="MaxFileSize" value="100MB"/>
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
      </layout>
   </appender>  
 
   <category name="org.apache.axis.transport.http.HTTPSender" additivity="false">
       <priority value="DEBUG"/>
       <appender-ref ref="AXIS_WS"/>
   </category>

Jboss 6 : Loguer sous Jboss 6 les appels client Axis (émetteurs requête et réponse )

<logger category="org.apache.axis.transport.http.HTTPSender" use-parent-handlers="false" additivity="false">
     <level name="DEBUG" />
     <handlers>
         <handler-ref name="AXIS_WS"/>
     </handlers>
   </logger>

Loguer sous Jboss ce que l'on a reçu en tant que serveur AXIS

Jboss 4 : Loguer sous Jboss 4 ce que l'on a reçu en tant que serveur AXIS (requête émise - sans la réponse)

<category name="org.apache.axis.providers.java.RPCProvider">
      <priority value="ALL"/>
   </category>
2010-04-16 12:37:23,250 DEBUG [org.apache.axis.providers.java.RPCProvider] body is <ServiceWeb ... FLUX SOAP

Jboss 6 : Loguer sous Jboss 6 ce que l'on a reçu en tant que serveur AXIS (requête émise - sans la réponse)

<logger category="org.apache.axis.providers.java.RPCProvider" use-parent-handlers="false" additivity="false">
     <level name="DEBUG"/>
     <handlers>
         <handler-ref name="AXIS_WS"/>
     </handlers>
   </logger>

Autres alternatives externes

Analyse du flux réseau avec Wireshark (anciennement Ethereal) qui est un logiciel libre d'analyse de protocole,

Ressources

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Fil des commentaires de ce billet