我正在Matlab中开发一个SOAP客户端来连接Web服务。我正在做的是以下脚本:
createClassFromWsdl('http://192.168.107.239/WSDL/v4.0/iLON100.wsdl')
obj = iLON100
methods(obj)
下一步结果:
Methods for class iLON100:
Clear Get List Set display
Delete InvokeCmd Read Write iLON100
然后,我正在编辑方法List,以便请求服务的Items列表。 dot m文件是:
% Build up the argument lists.
values = { '','//Item[@xsi:type="Dp_Cfg"]'};
names = { 'iLonItem','xSelect'};
types = {};
% Create the message, make the call, and convert the response into a variable.
soapMessage = createSoapMessage('http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/message/',
'List', values, names, types, 'document');
我还有来自设备供应商的SOAP测试人员。然后,如果我比较两个XML请求,它们会有所不同,如下一个示例所示(首先是原始请求,其次是Matlab请求):
<SOAP-ENV:Body>
<List xmlns="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/message/">
<iLonItem>
<xSelect>
//Item[@xsi:type="Dp_Cfg"]
</xSelect>
</iLonItem>
</List>
</SOAP-ENV:Body>
<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<List xmlns="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/message/">
<iLonItem/>
<xSelect>Item</xSelect>
</List>
</soap:Body>
如您所见,标签不包含在子标签中。我想知道如何做到这一点,并生成相同的XML结构,以便正确发送SOAP请求。
非常感谢你,
答案 0 :(得分:0)
最后,我通过创建如下结构来解决它:
myStruct = struct('iLonItem',struct('xSelect','//Item[@xsi:type="Dp_Cfg"]'))
此结构插入“值”和方法名称“iLONItem”。