Un problème assez courant en dev : comment rejouer des requêtes SOAP, afin de reproduire un scénario (cas d’erreur à reproduire, développement sans accès à l’infrastructure, etc). Le premier outil qui vient à l’esprit est Fiddler. Le souci avec cet outil est que lorsque l’on veut rejouer une trace, les règles travaillent sur les urls, et donc les query string. En mode SOAP, le client poste sur une url unique, et Fiddler a du mal à s'y retrouver.

Il existe deux autres outils : strace et httpreplay. Le premier permet de capturer des échanges entre un client et un serveur. Le second permet de rejouer ces traces. Il permet de rejouer aussi les traces de Fiddler. Pour rejouer mes traces, déjà prises avec Fiddler, j’ai donc installé HttpReplay. Pius j’ai récupéré l’archive Fiddler, l’ai renommé en zip, et ai extrait le sous-répertoire raw.

En allant dans le répertoire d’installation de HttpReplay, j’ai lancé la commande suivante :

SOCKTRC.EXE /s:81 /e:HTTPREPLAY.DLL /LOG:c:\temp\raw /RESPECTPOST

avec :

  • /s:81, pour que l’outil écoute sur le port 81.
  • /e:HTTPREPLAY.DLL, pour préciser que le plugin httpreplay doit être utiliser.
  • /LOG:c:\temp\raw, pour préciser le répertoire contenant les traces.
  • /RESPECTPOST, pour préciser que la mise en correspondance entre un appel et sa réponse doit tenir compte du corps de la demande, et pas simplement de l’URI.

Ultime point à ne pas oublier avant de lancer le client du Web Service, positionner le proxy du poste à localhost, port 81:

image

Et après, j’ai pu retester tout mon scénario dans une VPC sans avoir besoin d’être réellement connecté au serveur :)

image

Simple mais efficace…