How to debug SOAP message from matlab
3 views (last 30 days)
Show older comments
Hi
I am having issues using a XML WSDL file and using createSoapMessage from matlab to access an online data service.
Using the createSoapMessage function, how can I inspect the soap message that it is creating, so I can debug it?
0 Comments
Answers (1)
Nigel Davies
on 15 Aug 2012
I have taken this from an answer I put on StackOverflow.
Here is an example of a successful web service query.
msg = createSoapMessage( ...
'http://www.webserviceX.NET', ...
'GetCitiesByCountry', ...
{'Australia'}, {'CountryName'}, ...
{'{http://www.w3.org/2001/XMLSchema}string'}, ...
'document');
response = callSoapService( ...
'http://www.webservicex.net/GlobalWeather.asmx', ...
'http://www.webserviceX.NET/GetCitiesByCountry', msg);
cities = parseSoapResponse(response)
NOTE: The STYLE parameter is 'document', not 'rpc'. The host, www.webservicex.net is very inconsistent in how they capitalize, and it matters, especially where the url is used in the xml.
parseSoapResponse caused me trouble. For the GlobalWeather web service, it returns just the structure containing the requested data. When working with the FedWire service on the same host (see below), parseSoapResponse returns two outputs, a good/bad result and the data.
To query and use the WDSL service, first create a class from the WDSL definition, e.g.:
url = 'http://www.webservicex.net/FedWire.asmx?WSDL';
className = createClassFromWsdl(url);
This will create a directory called @FedWire in the current directory. To explore the services that FedWire offers, you have two options:
dir(@FedWire)
methods(FedWire)
Before you can use the web service, create an instance of the FedWire object:
fw = FedWire;
classType = class(fw) % To confirm the class type.
To use a service, for example, GetParticipantByLocation, which requires a City and StateCode:
[Result, FedWireLists] = GetParticipantsByLocation(fw, 'New York', 'NY')
Result should be true and FedWireLists is a deeply nested structure containing the data returned.
Opening @FedWire\GetParticipantsByLocation.m reveals how the MATLAB generated code is using createSoapMessage and callSoapService.
The example using createClassFromWsdl is an adaptation of http://www.mathworks.co.uk/products/bioinfo/examples.html?file=/products/demos/shipping/bioinfo/connectkeggdemo.html
To view the XML msg, use
m.saveXML(m.getFirstChild())
I would also like to know how to view the outgoing and incoming HTTP traffic in MATLAB like you can in a browser. Any ideas?
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!