我已發佈此問題here。但沒有得到任何答案。所以我也在這裏發佈。輸入/輸出元素的名稱必須是唯一的(WSDL規格)
我對WSDL有疑問。
我已經有如下兩種方法WSDL:
<portType name="TestService">
<operation name="add">
<input
wsam:Action="http://service.psvm.com/testservice/TestService/addRequest"
message="tns:add"
name="InputNums" />
<output
wsam:Action="http://service.psvm.com/testservice/TestService/addResponse"
message="tns:addResponse"
name="Result" />
</operation>
<operation name="subtract">
<input
wsam:Action="http://service.psvm.com/testservice/TestService/subtractRequest"
message="tns:subtract"
name="InputNums" />
<output
wsam:Action="http://service.psvm.com/testservice/TestService/subtractResponse"
message="tns:subtractResponse"
name="Result" />
</operation>
</portType>
正如你可以看到,無論是運營加減有輸入名稱相同的「InputNums」和「結果」 &輸出消息分別。
當我試圖驗證此WSDL,我得到以下錯誤:
The name 'InputNums' specified for this input element is not unique. The name of an input element must be unique from the names of all other input and output elements defined in the 'TestService' port type.
我讀過這裏的WSDL規範不給出明確的原因(至少對我來說)。它說:
The name attribute of the input and output elements provides a unique name among all input and output elements within the enclosing port type. In order to avoid having to name each input and output element within an operation, WSDL provides some default values based on the operation name.
爲了避免命名每個輸入/輸出元素,WSDL提供了默認值。但是爲什麼這是一個規則?它不應該是一個警告? 如果他/她想要,開發人員不能提供他/她的名字嗎?
此外,我不明白爲什麼這是一個問題,因爲當客戶端調用Web服務時,它們使用特定的操作名稱調用'add'或'subtract'。 我的問題最後是 - 只要操作名稱不同,爲什麼參數名稱很重要? 有人可以解釋這樣的WSDL的後果嗎?
灰色框中似乎沒有東西。 – rolve
我在編輯它。對不起,出於某種原因,WSDL內容沒有顯示出來。你現在能看到它嗎? –