Obtenir les Chaînes de Message SOAP en Java
Comment puis-je obtenir des pièces à partir d'un message SOAP et d'obtenir leurs valeurs?
Par exemple, si le .wsdl
message est ceci:
<wsdl:message name="theRequest">
<wsdl:part name="username" type="xsd:string"/>
<wsdl:part name="password" type="xsd:string"/>
<wsdl:part name="someMsg" type="xsd:string"/>
</wsdl:message>
Je veux obtenir someMsg
de la valeur et de l'enregistrer dans une variable de Chaîne.
Je la regardais: Obtenir SoapBody valeur de l'Élément de, mais n'a pas vraiment comprendre beaucoup de choses. Si quelqu'un pouvait fournir une explication ou toute sorte de guide il serait vraiment apprécié!
OriginalL'auteur o.o | 2016-05-20
Vous devez vous connecter pour publier un commentaire.
La voie normale de créer un client pour traiter SAVON messages et service web; générer les haricots de la
.xsd
des schémas, ainsi que tous les bouchons de.wsdl
d'invoquer la service web (dans ce cas pour Java par exemple, pourrait être à l'aide de JAXWS et JAXB).Note également que, généralement,
.wsdl
de définir le service, mais Si vous demandez comment analyser une demande vaut mieux montrer le.xsd
.De toute façon bien sûr, vous pouvez invoquer un service web en utilisant directement et client http apache, ou alors pour faire un POST, puis traiter la réponse... mais notez que ce n'est pas une méthode recommandée pour traiter avec beaucoup de demande et de réponse à partir d'un web service SOAP, car alors vous avez à analyser manuellement à chaque réponse à vos affaires. En supposant que cela est votre cas, vous pouvez faire quelque chose de similaire à ce processus de votre message SOAP ( j'utilise
javax.xml.soap.SOAPMessage
depuis semble que vous souhaitez utiliser cette classe basée sur les liens que vous avez mis dans la question).Par exemple si vous recevez un message SOAP comme:
Vous pouvez faire quelque chose comme:
MODIFIER SUR LA BASE DES OBSERVATIONS:
Il fonctionne pour moi aussi dans Java 8, pour l'instant, ma seule hypothèse est que quelque chose se passe avec la
FileInputStream
. Pouvez-vous essayer le code ci-dessous qui est la même chose, mais obtenir la demande d'unString
au lieu d'un Fichier.Espérons que cela aide,
null
. Je pense que le problème est sur cette ligne:Node node = nodes.item(0)
. Eclipse me donne une erreur en disant qu'il a besoin d'être castée pour unNode
. Donc je l'ai changé pour:Node node = (Node) nodes.item(0)
et je n'ai pas d'erreurs du compilateur. Je ne sais pas pourquoi il est dit que la Chaîne est nulle.peut-être que le
(Node)
cast est nécessaire en raison de type retourné parorg.w3c.dom.NodeList.item()
dépend de la version de java. Je suis à l'aide de Java 7 et voici leitem()
méthodes retourneNode
ainsi exprimés n'est pas nécessaire. À propos de pourquoi est votre chaînenull
, pouvez-vous partager lexml
qui sont que vous essayez d'analyser:)
?Je suppose que je suis un peu confus alors. Je pensais que le
/path/yourSOAPReq.xml
était le SAVON message posté ci-dessus. Pouvez-vous fournir un exemple dexml
de ce que la fichier doit probablement ressembler? Est-il juste unxml
fichier avec les attributs définis dans le.xsd
?oui, C'était
:)
, simplement je l'ai bien que vous êtes en train d'essayer avec un autre, car il fonctionne pas pour vous... Si vous êtes à l'aide de l'exemple dexml
à partir de la réponse en tant que source de ce code fonctionne. Qui version de java que vous utilisez?Je suis à l'aide de Java 8. Merci de votre aide, par le moyen!
OriginalL'auteur albciff