Thursday 18 December 2008

How to use curl to post a SOAP message

Sometimes, it is necessary to send a SOAP request to your web service to test
something out. There are multiple ways to do this - XMLSpy, socat,
netcat etc. but these are sometimes only available on development environments and not on machines where you might actually have to test something out.
That's when we can use curl to do this for us.
For the sense of this post, curl was the only network tool I had at my disposal to do this job but it's pretty handy.

First off, we need a sample SOAP message in a file. We can use curl to deal with the HTTP headers, so we only need the main body of data.

<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">

       <SOAP-ENV:Body>

                   ..................
       </SOAP-ENV:Body>

</SOAP-ENV:Envelope>




Let's say we store this in soap.req
We can then call our service like this :-

curl -d@soap.req http://someservice:8766


and see the result.



No comments:

Post a Comment