Comment voir les données SOAP envoyées par mon application client?

J’ai un projet dans lequel j’ai créé des classes de proxy de service Web avec wsdl.exe, puis créé simplement une instance de cette classe (hérite de System.Web.Services.Protocols.SoapHttpClientProtocol) et appelle la méthode qui devrait envoyer un message SOAP. J’utilise Visual Studio 2008 si cela compte. Et j’essaye ceci dans ma machine de développement sans access au service Web réel qui se trouve dans l’intranet du client. Ainsi, l’envoi ne réussira bien sûr pas et je ne recevrai aucune réponse, mais tout ce que j’aimerais voir, c’est le contenu exact des messages SOAP créés et essayés par cette solution. Comment je vois ça?

Utilisez le violoneux .

Jetez un coup d’œil à SOAPUI sur eviware.com.

C’est une application Java gratuite pour une utilisation personnelle. Entre autres choses, vous pouvez le configurer pour s’exécuter en tant que serveur de test factice. Il suffit de charger le fichier WSDL et de saisir les données factices.

En mode serveur de test, il enregistre vos demandes afin que vous puissiez voir ce qui se passe dans le message de demande.

Si votre service Web est accessible en texte clair, HTTP non SSL, vous pouvez simplement utiliser un renifleur, tel que Wireshark , pour afficher les données provenant de et vers votre application. Wireshark peut suivre, filtrer et parsingr des données filaires. Je l’ai utilisé plusieurs fois pour déboguer HTTP et d’autres protocoles, et c’est un excellent outil pour le faire.

Les messages SOAP sont simplement des données XML envoyées à l’aide de la méthode HTTP POST. Ainsi, vous pouvez par exemple installer un serveur Web local sur votre ordinateur de développement, configurer votre service Web pour utiliser un URI factice sur ce serveur et capturer le trafic réseau avec WireShark (AKA Ethereal). Le gros avantage de cette méthode est qu’elle n’implique aucun codage.

Vous pouvez également utiliser un serveur d’écho HTTP qui vide son trafic entrant, comme celui-ci (trouvé lors de la recherche sur “serveur d’écho http”):

Vous pouvez intercepter l’appel avec tcpMon