In some of my recent XML SOAP Services demos and presentations, I found myself needing to manually post a SOAP message to a listening (W3C) SOAP Services on http and also on the tcp transport protocol.
While doing that, I can also change the SOAP Message on the fly and post it instead of having to change the way VS.NET XMLSerializer serializes the types and then recompiling and running it again. Besides saving time, it does add an element of oommph as well as there is no break in momentum and more importantly, audiences really do see and can appreciate what is going onto the wire real-time.
Being able to change the messages on the fly as well also lets you see very quickly and clearly what the receiving endpoints can or cannot do. In this sense, with just a few tweaks of the angle brackets, I can generate SOAP Faults at will and it gives the audience great examples for learning how and when SOAP Faults are generated. For example, changing the element names OR re-ordering the elements of a SOAP Message and see what and how the receiving endpoint reacts. I will leave this as an exercise to the reader.
I have written a small tool to help me do that. Recently, I have just added an ability to the application to allow it to post SOAP messages over the TCP Transport channel to a listening Web Services Enhancements (WSE)-enabled SOAP Service.
Granted, most people will still need to manually pre-compose a SOAP Message before-hand. Do this as part of your pre-presentation work and save the messages for posting to the receiving endpoints later. Of course, if you are an angle bracket freak like me or Tim or Radovan, then you should all feel comfortable typing them into the textbox.
Seriously though, this tool allows you to save your SOAP message scripts as part of your preparation work. You can either post these as files (via the OpenFile Dialog button) or copy-n-paste those scripts into the textbox.
I believe that this can serve some basic purpose scenarios. Do note that besides doing presentation work with this, I think this is a great tool for developers who need to further test their SOAP Services to make sure it is able to generate the exact SOAP Responses (SOAP Faults and all) with every single differing SOAP Request.
For example, users testing their WSE-Enabled SOAP Services can change the wsu:Timestamp element to test the service timeouts or play around with the wsse:Security elements of _WS-Security Specs_.
- This will only work for the Request-Response MEP for WSE-Enabled SOAP Services
- Incorporate the ability to listen for incoming SOAP Messages as well. So it will work for truly asynchronous, duplex type SOAP Services as well
I have made it available for download here. I plan to make the source codes available once I incorporate most of the features the market wants.
Please feel free to leave your comments and feedback in this post so I know how to better improve it.