次のMATLABコードを使用して、http: //www.webservicex.net/にあるサンプルのsoapサーバーに接続しようとしています。
% createSoapMessage(NAMESPACE,METHOD,VALUES,NAMES,TYPES,STYLE) creates a SOAP message.
% VALUES, NAMES, and TYPES are cell arrays.
m = createSoapMessage('http://www.webserviceX.NET', 'GetCitiesByCountry', ...
{'Australia'}, {'CountryName'}, { '{http://www.w3.org/2001/XMLSchema}string' }, 'rpc')
% callSoapService(ENDPOINT,SOAPACTION,MESSAGE) sends the MESSAGE,
% a Java DOM, to the SOAPACTION service at the ENDPOINT.
response = callSoapService('http://www.webservicex.net/globalweather.asmx?WSDL', ...
'http://www.webserviceX.NET/GetCitiesByCountry', m);
次の応答があります(表示用に行末が挿入されています)。
val =
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>System.Web.Services.Protocols.SoapException:
Server was unable to process request.
---> System.Data.SqlClient.SqlException:
Procedure or function 'getWCity' expects parameter '@CountryName',
which was not supplied.
at WebServicex.GlobalWeather.GetCitiesByCountry(String CountryName)
--- End of inner exception stack trace ---
</faultstring><detail />
</soap:Fault>
</soap:Body>
</soap:Envelope>
サーバーが応答していることを知っています。私はそれをPythonと次のようにsudsで調べることができます:
from suds.client import Client
url = 'http://www.webservicex.net/globalweather.asmx?WSDL'
client = Client(url)
result = client.service.GetCitiesByCountry('Australia')
私の簡単な質問は、私が何を間違っているのかということです。
また、createSoapMessageが作成するDOMオブジェクトを表示する方法と、MATLABが送受信するxmlを表示する方法も知りたいです。