这是您需要经历的过程。
首先,根据 WDSL 定义创建一个类:
url = 'http://www.webservicex.net/FedWire.asmx?WSDL';
className = createClassFromWsdl(url);
这将在当前目录中创建一个名为@FedWire 的目录。您可以目录此目录或使用以下内容来探索 FedWire 提供的服务:
methods(FedWire)
在您可以使用 Web 服务之前,请创建 FedWire 对象的实例:
fw = FedWire;
classType = class(fw) % to confirm the class type.
要使用需要城市和州代码的服务,例如 GetParticipantByLocation:
[Result, FedWireLists] = GetParticipantsByLocation(fw, 'New York', 'NY')
结果应该为真,FedWireLists 是一个包含返回数据的深层嵌套结构。
打开@FedWire\GetParticipantsByLocation.m 揭示了 MATLAB 生成的代码如何使用 createSoapMessage 和 callSoapService。如果服务不支持 WSDL 查询,那么就需要使用这些低级函数。
createSoapMessage 的参数填充如下:
- 命名空间:'http://www.webservicex.net/'
- 方法:'GetParticipantsByLocation'
- 值:{'纽约','纽约'}
- 名称:{'City','StateCode'}
- 类型:{'{http://www.w3.org/2001/XMLSchema}string'、'{http://www.w3.org/2001/XMLSchema}string'}
- 风格:'文件'
并调用SoapService:
- 端点:'http://www.webservicex.net/FedWire.asmx'
- SOAPACTION:'http://www.webservicex.net/GetParticipantsByLocation'
- MESSAGE:createSoapMessage 调用的结果。
以下代码对低级调用进行相同的查询:
% createSoapMessage(NAMESPACE,METHOD,VALUES,NAMES,TYPES,STYLE) creates a SOAP message.
soapMessage = createSoapMessage( ...
'http://www.webservicex.net/', ...
'GetParticipantsByLocation', ...
{'New York', 'NY'}, ...
{'City', 'StateCode'}, ...
{'{http://www.w3.org/2001/XMLSchema}string', ...
'{http://www.w3.org/2001/XMLSchema}string'}, ...
'document')
% callSoapService(ENDPOINT,SOAPACTION,MESSAGE) sends the MESSAGE,
response = callSoapService( ...
'http://www.webservicex.net/FedWire.asmx', ...
'http://www.webservicex.net/GetParticipantsByLocation', ...
soapMessage);
%parseSoapResponse Convert the response from a SOAP server into MATLAB types.
[result, participants] = parseSoapResponse(response)
我在使这些示例正常工作时遇到了很多麻烦,因为我将像这样的服务域名大写,这www.webserviceX.NET
是我从他们的示例 XML 中获取的。当我改为小写时,它起作用了。
使用的示例是对http://www.mathworks.co.uk/products/bioinfo/examples.html?file=/products/demos/shipping/bioinfo/connectkeggdemo.htmlcreateClassFromWsdl
的改编