2009-06-18 8 views
0

J'étudie un système existant qui repose sur les messages SOAP à passer entre les différents exécutables. J'essaie de remplacer l'une de ces applications par une de mes propres applications, et en regardant la documentation, je me heurte à une difficulté.Essayer de créer un paquet SOAP qui ressemble à ceci:

Je n'ai jamais travaillé avec SOAP auparavant et je ne suis pas sûr des outils à utiliser pour accomplir cette tâche, ni même des mots-clés que je devrais rechercher. Ce que je dois faire est d'être en mesure de créer un message SOAP qui ressemble à ceci:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
> <SOAP-ENV:Body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <GetSpecialList xmlns="SpecialManagerAPI"/> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 

Et, je dois l'envoyer via TCP au port IP local (127.0.0.1) 1234 et obtenez des réponses il. Comment créer un message ci-dessus et quel est un moyen facile de l'envoyer?

+0

La fin de la publication a-t-elle un wsdl disponible? Si c'est le cas, vous pouvez mettre le service dans votre propre exécutable en utilisant la fonction de référence du service. – spender

+0

Par exemple, un WebService de publication vous donnera quelque chose comme: http: // localhost: 1234/TheService? Wsdl. En utilisant ceci, vous pouvez importer le webservice dans votre projet VS en ajoutant une référence de service à votre projet en utilisant l'URL WSDL de l'éditeur. – spender

Répondre

0

System.Web.HttpRequestClass serait le seul moyen de le faire. Vous devrez définir les en-têtes de manière appropriée (en particulier l'en-tête "SOAPAction"). Cependant je vous conseille de ne pas faire ça! Trouvez le wsdl pour le service et utilisez-le pour créer vos classes avec AddWebReference dans Visual Studio ou Wsdl.exe. Cela va construire une classe bien formée pour vous (ou plusieurs) pour travailler avec!

0

Vous disposez de trois options de base:

  1. Si le service a une description de service WSDL ou DISCO, vous pouvez connecter via Ajouter un service de référence (VS 2008 et VS 2005 avec certains addons WCF) ou Ajouter une référence Web (VS 2005). Les équivalents en ligne de commande de ces outils pour générer des classes de client de savon sont respectivement svcutil.exe et wsdl.exe.
  2. Vous pouvez faire comme C. Ross suggéré dans son answer et utiliser le HttpRequestClass en utilisant une chaîne personnalisée. Vous pouvez créer la classe XmlDocument pour créer le message XML et utiliser la classe HttpRequest pour l'envoyer. Je vous suggère de créer un document XML de modèle et de l'enregistrer en tant que ressource intégrée dans votre exécutable. Vous pouvez ensuite faire des requêtes xpath pour modifier les paramètres.
Questions connexes