J'essaye d'écrire du code dans Java pour en savoir plus sur le codage avec WSDL et SOAP.Java SOAP - Besoin d'aide sur la manipulation Body and ChildElement
Par exemple donné:
'<'to:checkAccount xmlns:to="http://foo"> '<'to:id> test '<'/to:id> '<'to:password> test '<'/to:password> '<'to:checkAccount >"
'<'element name="checkAccountResponse"> '<'complexType> '<'sequence> '<'element name="checkAccountReturn" type="impl:account"/> '<'/sequence> '<'/complexType> '<'/element>
'<'complexType name="account"> '<'sequence> '<'element name="active" type="xsd:boolean"/> '<'element name="name" type="xsd:string"/> '<'/sequence> '<'/complexType>
mon code ressemble à ceci au moment:
//create the message
String endpoint = "http://foo/someAPI";
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message = factory.createMessage();
SOAPPart soapPart = message.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPHeader header = message.getSOAPHeader();
//adding to the body
SOAPBody body = message.getSOAPBody();
SOAPFactory soapFactory = SOAPFactory.newInstance();
Name bodyName = soapFactory.createName("checkAccount","to","http://foo");
SOAPElement bodyElement = body.addBodyElement(bodyName);
//add the ID child elements
soapFactory = SOAPFactory.newInstance();
Name childName = soapFactory.createName("id","to","http://foo");
SOAPElement symbol = bodyElement.addChildElement(childName);
symbol.addTextNode("test");
//add password child element
soapFactory = SOAPFactory.newInstance();
childName = soapFactory.createName("password","to","http://foo");
symbol = bodyElement.addChildElement(childName);
symbol.addTextNode("test");
//call and get the response
SOAPMessage response = sc.call(message,endpoint);
//print the response
SOAPBody responseBody = response.getSOAPBody();
java.util.Iterator iterator = responseBody.getChildElements(bodyName);
.
.
.
//the response is blank so trying to iterate through it gives the exception
Je cours et je ne reçois rien en retour, juste vide. Je sais que mon endpoint est correct, ainsi que checkAccount, id et password depuis que je l'ai testé dans xmlSpy et qu'il retourne l'état du compte.
Cela doit être la façon dont j'essaie d'obtenir la réponse. Quelqu'un peut-il s'il vous plaît me donner un indice?
Merci pour votre aide Dunderklumpen, j'ai changé mon code afin qu'il ressemble à votre depuis sa plus facile à lire. Mais on dirait que le problème n'est pas cela et plus comme comment je dois lire et traiter la réponse. J'ai mis à jour mon post, pouvez-vous regarder s'il vous plaît et voir où je me trompe? aussi j'utilise eclipse, comment savez-vous à quoi ressemble exactement votre sortie? – ke3pup
J'ai ajouté du code pour vous montrer comment imprimer le message SOAP. Bien sûr, cela ne formate pas le XML (tout est écrit sur une ligne). Vous pouvez utiliser eclipse pour le formater en procédant comme suit. 1. copier le code XML de la console de sortie 2. créer un nouveau document texte en eclipse coller le contenu 3. enregistrer le document en tant que .xml 4. Rouvrir le document et choisir le format (ctrl + shift + f). Pour une petite chaîne XML, cela ne vaut pas vraiment la peine, mais pour les grandes chaînes XML, cela peut être très utile. –
Dunderklumpen
Si vous voulez voir apparaître et aller la requête SOAP, vous devriez envisager d'utiliser TCPMon. https://tcpmon.dev.java.net/ peut agir comme un "homme au milieu". Vous pouvez configurer TCPMon pour qu'il écoute votre demande SOAP et l'envoie au bon serveur, puis il vous la transmet. C'est un moyen efficace de voir à quoi ressemblent la requête et la réponse. – Dunderklumpen