この質問をここに投稿しました。しかし、答えは得られませんでした。だから私もここに投稿しています。
WSDLについて質問があります。
私は以下の2つのメソッドを持つ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」と「Result」という同じ名前の入力メッセージと出力メッセージがあります。
このWSDLを検証しようとすると、次のエラーが発生します。
この入力要素に指定された名前'InputNums'は一意ではありません。入力要素の名前は、「TestService」ポートタイプで定義されている他のすべての入力要素および出力要素の名前とは一意である必要があります。
私はここでWSDL仕様を読みましたが、理由は明確に示されていません(少なくとも私には)。それは言う:
input要素とoutput要素のname属性は、囲んでいるポートタイプ内のすべての入力要素と出力要素の中で一意の名前を提供します。操作内の各入力要素と出力要素に名前を付ける必要がないように、WSDLは操作名に基づいていくつかのデフォルト値を提供します。
各入力/出力要素に名前を付けることを避けるために、WSDLはデフォルトを提供します。しかし、なぜそれがルールなのですか?警告ではないですか?開発者は、必要に応じて自分で名前を提供することはできませんか?
さらに、クライアントがWebサービスを呼び出すときに、「add」または「subtract」と呼ばれる特定の操作名で呼び出すため、これが問題になる理由がわかりません。最後に私の質問は-操作名が異なる限り、なぜパラメーター名が重要なのですか?誰かが、もしあれば、このようなWSDLを持つことの結果を説明できますか?