【发布时间】:2012-08-06 15:17:22
【问题描述】:
我必须为从另一个服务传递数据的 SoapServer 创建 WSDL。提供给我的数据具有以下结构:
<operationName>
<parameterHeader></parameterHeader>
<parameterData1></parameterData1>
<parameterData2></parameterData2>
...
<parameterDataN></parameterDataN>
</operationName>
这意味着我必须创建方法
function operationName(parameterHeader, parameterData1, parameterData2, ... parameterDataN){
...
}
不可能知道我的操作会提供多少参数。
作为一种解决方案,我正在尝试为不带参数的方法创建 WSDL,但在此方法内部使用函数 func_get_args() 来获取所有参数。
不幸的是,我仍然无法创建正确的 WSDL,而且我不确定这是否可行。
我的网络服务应该接收的精确数据(示例)如下:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing">
<env:Header/>
<env:Body>
<tns:operationResponse xmlns:tns="http://somedomain.com/demo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://anotherdomain.com/anotherdemo">
<tns:ResponseHeader attrName1="data1" attrName2="data2" attrName3="data3" />
<tns:ObjectData>
<tns:ElementData ElementAttr1="data1" ElementAttr2="data2" ElementAttr3="data3"/>
</tns:ObjectData>
<tns:ObjectData>
<tns:ElementData ElementAttr1="data21" ElementAttr2="data22" ElementAttr3="data23"/>
</tns:ObjectData>
<tns:ObjectData>
<tns:ElementData ElementAttr1="data31" ElementAttr2="data32" ElementAttr3="data33"/>
</tns:ObjectData>
<tns:ObjectData>
<tns:ElementData ElementAttr1="data41" ElementAttr2="data42" ElementAttr3="data43"/>
</tns:ObjectData>
</tns:operationResponse>
</env:Body>
</env:Envelope>
您对此类 WSDL 是否有任何经验,或者对如何获得提供的数据结构有一些想法?
我认为可能会考虑作为参数名称,因此其他数据可以用作complexType。也许 WSDL 提供了一些技巧……
【问题讨论】:
-
我不知道 WSDL 规范是否支持这一点。有一个集合参数并传入一个数组有什么问题?
标签: php wsdl soapserver