2012-07-20 5 views
0

J'ai un service Web exécuté sur mon apache tomcat local. Je peux parler avec succès via SoapUI. Cependant, quand j'écris un client en Java, ça ne me donne pas de réponse!Appel à un service Web via un client Java

Voici le code client:

SOAPConnectionFactory myFct = SOAPConnectionFactory.newInstance(); 
    SOAPConnection myCon = myFct.createConnection(); 
    MessageFactory myMsgFct = MessageFactory.newInstance(); 
    SOAPMessage message = myMsgFct.createMessage(); 
    SOAPPart mySPart = message.getSOAPPart(); 
    SOAPEnvelope myEnvp = mySPart.getEnvelope(); 
    SOAPBody body = myEnvp.getBody(); 
    Name bodyName = myEnvp.createName("Ping", "ws","http://ws.myeclipseide.com/"); 
    SOAPBodyElement gltp = body.addBodyElement(bodyName); 
    Name myContent1 = myEnvp.createName("arg0"); 
    SOAPElement mySymbol1 = gltp.addChildElement(myContent1); 
    mySymbol1.addTextNode("test"); 
    message.saveChanges(); 

    URLEndpoint endPt = new URLEndpoint("http://localhost:8080/PingWebService/StringPingPort?WSDL"); 
    SOAPMessage reply = myCon.call(message, endPt); 
    myCon.close(); 
    System.out.println("Response: "+reply.getContentDescription()); 

L'appel par soapUI ressemble à ceci:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.myeclipseide.com/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <ws:Ping> 
     <!--Optional:--> 
     <arg0>testing this</arg0> 
     </ws:Ping> 
    </soapenv:Body> 
</soapenv:Envelope> 

Toute idée pourquoi il ne fonctionnerait pas par java ???

Répondre

0

ne fonctionne pas

Exception, un message d'erreur, pas d'appel, ...? A première vue, je ne vois rien d'évident mais puisque vous utilisez Eclipse, activez le moniteur TCP sous Eclipse, lancez votre appel en exécutant votre programme depuis Eclipse et vérifiez ce qui est envoyé sur le réseau.

+0

"ne fonctionne pas" => Je reçois un message de réponse comme "null". Vous voyez le sysout à la fin il imprime "Réponse: null", Oh et btw, j'utilise "myeclipse" et je n'arrive pas à trouver le moniteur TCP/IP sous les préférences! – tsure

0

getContentDescription() «Retourne: une chaîne décrivant le contenu de ce message ou null si aucune description n'a été définie» et NON le contenu de votre message.

Essayez ceci:

ByteArrayOutputStream out = new ByteArrayOutputStream(); 
    reply.writeTo(out); 
    System.out.println("Response: "+out.toString()); 
Questions connexes