J'utilise Apache CXF pour mes services Web. J'ai créé une instance de AbstractSoapInterceptor
. Dans sa méthode public void handleMessage(SoapMessage message) throws Fault
, je voudrais imprimer le contenu XML du message intercepté à la console. Comment puis-je y parvenir?Impression du contenu XML du message SOAP
0
A
Répondre
8
Vérifiez this et recherchez INTERCEPTEUR INBOUND. Placerons ici pour référence ...
public class InterceptorMensajeSOAPIn extends AbstractSoapInterceptor {
private static Logger log =
Logger.getLogger(InterceptorMensajeSOAPIn.class);
private SAAJInInterceptor saajIn = new SAAJInInterceptor();
public InterceptorMensajeSOAPIn(){
super(Phase.PRE_PROTOCOL);
getAfter().add(SAAJInInterceptor.class.getName());
}
public void handleMessage(SoapMessage message) throws Fault {
SOAPMessage soapMessage = getSOAPMessage(message);
try {
soapMessage.writeTo(System.out);
} catch (Exception e) {
e.printStackTrace();
}
}
private SOAPMessage getSOAPMessage(SoapMessage smsg){
SOAPMessage soapMessage = smsg.getContent(SOAPMessage.class);
if (soapMessage == null) {
saajIn.handleMessage(smsg);
soapMessage = smsg.getContent(SOAPMessage.class);
}
return soapMessage;
}
}
2
une raison quelconque vous ne pouvez pas utiliser le LoggingInInterceptor
livré avec CXF? Vous pouvez simplement saisir le code pour cela et l'utiliser comme base, mais dans la version 2.3, le LoggingInInterceptor
a été amélioré pour permettre de spécifier un flux d'impression et une telle utilisation, de sorte qu'il pourrait "juste fonctionner".
1
Vous pouvez également utiliser une fonction pour cela: org.apache.cxf.feature.LoggingFeature
:
<jaxws:endpoint ...>
<jaxws:features>
<bean class="org.apache.cxf.feature.LoggingFeature"/>
</jaxws:features>
</jaxws:endpoint>
Questions connexes
- 1. Expiration du message SOAP
- 2. Calcul de la longueur du contenu SOAP
- 3. Cryptage du message SOAP dans l'axe 2
- 4. Impression du contenu des contrôles en C#?
- 5. Message HTTP Java pour le message XML SOAP
- 6. Impression du contenu du contrôle WebBrowser en C#
- 7. WCF MesageContract - personnalisation du message SOAP sortant - plusieurs corps
- 8. Comment convertir du XML brut en SOAP XML en C#?
- 9. Affichage du message SOAP sous-jacent à l'aide de vb.net
- 10. Impression du même contenu dans tous les navigateurs
- 11. Impression du contenu d'un <rich: modalPanel />?
- 12. ASP - Impression du contenu complet de la requête
- 13. Comment envoyer du XML SOAP via Curl et PHP?
- 14. Erreurs du client SOAP PHP et du serveur SOAP
- 15. C# - Impression du formulaire
- 16. Comment accéder au contenu du message dans la fenêtre de composition du message de Thunderbird?
- 17. La réponse du service Web est null, mais la réponse du message SOAP est valide
- 18. Obtention du contenu XML d'un SimpleXMLElement
- 19. Modification du contenu XML existant en C#
- 20. Obtenir du contenu de XML PHP5
- 21. Modification du contenu du fichier XML avec Python
- 22. Chargement dynamique du contenu NSPopUpButton à partir du fichier XML
- 23. Dépannage du service Web SOAP
- 24. Utilisation de LINQ to XML pour analyser un message SOAP
- 25. bâtiment message SOAP avec le message XMLDocument VB.NET
- 26. MFC - Impression du document RTF
- 27. Récupération/Impression du contexte d'exécution
- 28. Impression de contenu Iframe
- 29. Comment afficher un message MessageBox contenant du contenu d'étiquette?
- 30. obtenir le contenu du message dans l'en-tête
Est-ce que cette solution fonctionne avec 3.x CxF? Je l'ai essayé et l'appel à getContent renvoie toujours null, mais peut-être que je fais quelque chose d'autre faux ou l'API a changé dans 3.0. – bwfrieds