2014-07-14 7 views
0

Je dois créer un client Java pour exécuter un service web. J'ai un XML contenant toute la requête SOAP (Envelope, Header, Body). Comment puis-je écrire un code Java pour exécuter le service web, en passant le fichier xml qui contient une demande de savon?Webservice client pour appeler un client webservice - java

J'ai essayé de chercher beaucoup, mais n'a pas pu trouver un échantillon qui le fait

Le webservice sur le serveur est sur SOAP 1.1 avec un contenu de type « text/xml »

Par exemple wsdlLocation = » http: // localhost: 8080/helloservice/hello? wsdl "

Le webservice n'a pas de paramètre d'entrée, c'est pourquoi les données doivent être passées complètement comme une demande de savon. Les données transmises sont sous la forme de xml.

Extrait de fichier xml requête SOAP (Sample.xml)

<?xml version="1.0" encoding="UTF-8"?> 
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> 
<env:Body> 
<putTxlife1203Info xmlns="http://www.openuri.org/"> 
<TXLife> 

</TXLife> 
</putTxlife1203Info> 
</env:Body> 
</env:Envelope> 

Ce serait vraiment génial si quelqu'un pouvait fournir un échantillon, il serait grand

+0

Je suppose qu'il ya une faute de frappe dans l'URL dans l'importation ou include dans le wsdl. –

Répondre

0

Pour générer les méthodes de service côté client et des choses , s'il vous plaît utiliser wsimport outil comme suit:

wsimport -keep http://localhost:8080/helloservice/hello?wsdl 

Source: http://www.mkyong.com/webservices/jax-ws/jax-ws-hello-world-example/ et là, si vous avez vraiment (je veux dire vraiment vraiment) veulent tout faire à la main, les instructions sont également là. Je préférerais générant sur en créant choses donc, gardons les choses simples.

Ensuite, vous créez le client avec quelque chose comme:

package com.mkyong.client; 

import com.mkyong.ws.HelloWorld; 
import com.mkyong.ws.HelloWorldImplService; 

public class HelloWorldClient{ 

    public static void main(String[] args) { 

    HelloWorldImplService helloService = new HelloWorldImplService(); 
    HelloWorld hello = helloService.getHelloWorldImplPort(); 

    System.out.println(hello.getHelloWorldAsString("mkyong")); 

    } 

} 

Ce fut une citation directe à partir du lien ci-dessus, et les noms de méthode peut varier selon que vous tutoriel suivi pour le service réel sur le côté serveur.

+0

wsimport est livré avec jdk. – mico

+0

wsimport ne fonctionne pas car le serveur wsdl ne démarre pas avec l'espace de noms Sam

+0

Avez-vous vérifié le contenu de l'URL wsdl sur le navigateur? Voir tout ok là? Regardez http://stackoverflow.com/questions/3981873/generating-web-service-classes-using-soapui-with-a-wsdl-over-https si le wsdl semble par ailleurs correct. – mico

1

Si vous avez plein xml avec la requête SOAP sauvegardée dans le fichier et que vous devez l'envoyer directement (pour tester comme je suppose) alors utilisez simplement le client http et faites la requête POST avec. Voici quelques exemples de la façon de le faire:

Sending HTTP Post request with SOAP action using org.apache.http

3
import javax.xml.soap.*; 

public String callTestService(String soapRequestXml, String url) throws Exception { 
    // Create SOAP Connection 
    SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance(); 
    SOAPConnection soapConnection = soapConnectionFactory.createConnection(); 

    SOAPMessage soapRequest = MessageFactory.newInstance().createMessage(new MimeHeaders(), 
      new ByteArrayInputStream(soapRequestXml.getBytes())); 

    // Send SOAP Message to SOAP Server 
    SOAPMessage soapResponse = soapConnection.call(soapRequest, url); 

    ByteArrayOutputStream soapResponseBaos = new ByteArrayOutputStream(); 
    soapResponse.writeTo(soapResponseBaos); 
    String soapResponseXml = soapResponseBaos.toString(); 

    return soapResponseXml; 
}