我必須爲我的SoapServer創建WSDL,以傳遞其他服務的數據。這是給我提供的數據結構如下:帶無限參數的wsdl操作
<operationName>
<parameterHeader></parameterHeader>
<parameterData1></parameterData1>
<parameterData2></parameterData2>
...
<parameterDataN></parameterDataN>
</operationName>
這意味着我要創建的方法
function operationName(parameterHeader, parameterData1, parameterData2, ... parameterDataN){
...
}
這是不可能知道有多少參數將提供給我的操作。
作爲解決方案,我試圖爲不帶參數的方法創建WSDL,但在此方法內使用函數func_get_args()
來獲取所有參數。
不幸的是,我仍然無法創建正確的WSDL,我不確定這是否可能。
精確的數據(例如)應該由我的web服務接收如下:
<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規範是否支持這個。有一個集合參數並傳入數組有什麼問題? – 2012-08-06 15:24:51