0

WSDL定義関数を呼び出そうとしたときに、VisualStudio2010からの無効な定義に関するエラーが発生しました。問題は、2つの別々の関数で同じメッセージ定義を使用できないことでした。したがって、同じことをしながら、複数のメッセージ定義を作成する必要があります。

例えば:

<message name="Hi">
  <part name="input" type="xsd:string">
</message>
<message name="Say_hi_back">
  <part name="return" type="xsd:string">
</message>
<message name="I_hate_you">
  <part name="return" type="xsd:string">
</message>

<portType name="DataPort">
   <operation name="sayHello">
      <input message="tns:Hi"/>
      <output message="tns:Say_hi_back"/>
   </operation>
   <operation name="sayIHateYou">
      <input message="tns:Hi"/>
      <output message="tns:I_hate_you"/>
   </operation>
</portType>

ここで、関数のいずれかを呼び出すとエラーが発生します。まったく同じ部分のHi2を追加し、操作定義の入力メッセージの1つをtns:Hi2に変更しない限り。

どうしてこれなの?意味がない。構築するすべての関数にcustomerIDを追加する必要があるサービスを構築しています。予定を取得するための1つの機能、支払いのための1つ、すべてのための1つの機能。これは、メッセージ定義を10回コピーして、getCustomerID *N*という名前を付ける必要があることを意味します。

また、多くの場合、複数の入力パラメーターが必要になります。たとえば、誰かが日付xから日付yまでのすべての予定を設定したいとします。(これは、支払いなどのように保存されるすべての情報に当てはまります。)int、date、およびdateを含む1つのメッセージのみが必要です。巨大な文書を書かなければなりません。

だから私の質問は、これを行う他の方法があるかどうかです。私はWSDLを2日間しか使用していませんが、それらは2日間問題に満ちていて、「勝利」を欺いていました。ある問題を解決して、それが次の問題への門を開いたことを見つけるだけです。

ありがとう。:)

4

1 に答える 1

1

メッセージパーツ定義の「type」属性によって証明されるように、RPCスタイルを反映するWSDLを作成しています。なぜこれがVSで問題を引き起こすのか完全にはわかりませんが、RPCスタイルはドキュメントスタイルを支持して流行しなくなりました(一部のツールの最新バージョンはRPCのサポートを完全に廃止しました)。

ドキュメントスタイルを使用すると、より良い結果が得られる場合があります(ドキュメント/リテラル​​/ラップが標準です)。スタイルの違いについてもう少し詳しく読むことができます(http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/)。

必要な変更はそれほど複雑ではなく、このサイト(http://wso2.org/library/knowledge-base/convert-rpc-encoded-wsdl-document-literal-wrapped-wsdl)はいくつかの助けを提供しますが、著者は#Outputメッセージセクションで彼のrpcとリテラル出力の定義を反転しました。

于 2012-08-09T06:36:10.643 に答える