I'm calling an external HTTPS webservice.
In order to check what is wrong, the owner needs the SOAP request I'm sending.
I have a web reference and the generated proxy class generated by VS 2008...
Is there a way to see the SOAP message just before sending it?
I'm thinking in some .net code... because the Sniffers I tried didn't "see" the webservice invocation don't know why.
It sounds to me like you could create a sort of proxy application - change the URL in your client to point to the proxy - proxy would record the entire SOAP request message and send it on to the web service - receive the response, log it, and send it on to your client.
In SOAP web service, each HTTP request or response encapsulates a SOAP envelope, these messages are easy to trace by using Eclipse IDE, build-in “TCP/IP monitor” tool. The idea is host another server in between the client and server to perform port forward function to intercept the HTTP traffic.
You can simply serialize the request object, before subtmit, like this:
var sreq = new SomeSoapRequest(); // ... fill in here ... var serxml = new System.Xml.Serialization.XmlSerializer(sreq.GetType()); var ms = new MemoryStream(); serxml.Serialize(ms, sreq); string xml = Encoding.UTF8.GetString(ms.ToArray()); // in xml string you have SOAP request
What you need is a SoapExtension. There's quite a few good examples here:
How do I get access to SOAP response
Getting RAW Soap Data from a Web Reference Client running in ASP.net
XML Parse error while processing the SOAP response
One of the articles linked to: http://msdn.microsoft.com/en-us/magazine/cc164007.aspx
Also search SO for: https://stackoverflow.com/search?q=SoapExtension
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With