Comment envoyer une requête SOAP en utilisant WebServiceTemplate?
Je suis en train d'envoyer une demande à un webservice SOAP. J'ai lu ce tutoriel et préparé le code suivant. Cependant, je vais envoyer des différentes demandes de plusieurs de SAVON services web, alors que le tutoriel concentré sur une demande. Comment puis-je envoyer une requête SOAP en utilisant WebserviceTemplate
?
WebServiceTemplate
SoapMessage soapMsg = new SoapMessage();
soapMsg.setUsername("Requester");
soapMsg.setPassword("Pass");
soapMsg.setLanguageCode("EN");
Request request = new Request();
request.setDeparture("FDH");
request.setDestination("HAM");
Date date = new Date();
SimpleDateFormat frm2 = new SimpleDateFormat("yyyy-MM-dd");
request.setDepartureDate(frm2.parse(frm2.format(date)));
request.setNumADT(1);
request.setNumCHD(0);
request.setNumInf(0);
request.setCurrencyCode("EUR");
request.setWaitForResult(true);
request.setNearByDepartures(true);
request.setNearByDestinations(true);
request.setRronly(false);
request.setMetaSearch(false);
soapMsg.setRequest(request);
WebServiceTemplate webServiceTemplate = new WebServiceTemplate(). //how to create object and send request!
Object response = webServiceTemplate.marshalSendAndReceive(
"https://aaa5.elsyarres.net", soapMsg);
Response msg = (Response) response;
System.err.println("size of results of wogolo:"
+ msg.getFlights().getFlight().size());
- Avez-vous une bonne raison de le faire manuellement? Vous pouvez générer un proxy de service web si vous avez les services wsdl fichier. Ici sont des instructions pour savoir comment faire cela dans eclipse.
- Le problème est que je n'ai pas wsdl, aussi je vais envoyer des requêtes SOAP à de multiples SAVON a base de services web.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le code suivant, vous n'avez pas besoin de définir quelque chose dans le fichier xml.
setPackagesToScan
à la place. La Documentation dit:Set the packages to search for classes with JAXB2 annotations in the classpath. This is using a Spring-bases search and therefore analogous to Spring's component-scan feature
Pour envoyer des différentes requêtes SOAP à différents services SOAP, il vous suffit de faire votre WebServiceTemplate au courant de toutes les demandes et les réponses qu'il aura à traiter.
Créer une classe Java pour chaque demande et de la réponse de la sorte:
(Le @XmlRootElement est parce que nous utilisons JAXB marshaller ci-dessous; voir Jaxb de référence pour plus d'info).
La configuration du modèle qui est fait par exemple comme ceci:
"modèles" est le nom du package dans lequel la Demande/Réponses les classes sont, de sorte que jaxb pouvez les trouver.
Alors que vous venez de créer une instance de la demande de la classe que vous souhaitez effectuer l'appel, comme suit:
De la même façon, vous pouvez lancer la réponse des objets dans votre JAXB classes définies ci-dessus.
En supposant que votre SoapMessage est marhsallable
Pour envoyer le même message à plusieurs points de terminaison vous avez seulement besoin d'une boucle sur le code d'envoi et le gestionnaire de requêtes.
Quelque chose comme ceci:
Ce code utilise le Printemps WebServiceTemplate
Voici un Exemple de ce que vous devriez être à la recherche pour
Savon a beaucoup de restriction contrairement à
REST
, Il suit des normes à respecter avant de vous obtenir de l'appel du Réseau de travail,Mais à la différence de
Rest
, dans la fabrication du Savon si vous avezWSDL
URL, vous pouvez obtenir toutes les informations nécessaires à l'appel l'appel Soapce code a été écrit en
Android
de sorte que vous pouvez ignorer une partie de cela, mais j'ai quand même gardé de répondre si quelqu'un à partir d'android en arrière-plan peut mettre une bonne utilisation de ceOuvrir
[WSDL][1]
dans le navigateur et vérifier les choses qui comptent pour appeler une méthode à distance sur le serveur.