0

次の 2 つの部分で構成される WSDL メッセージがあります。

<wsdl:message name="GenericWebServiceOperationRequestMessage">
    <wsdl:part name="Body" element="ns:MyRequest"/>
    <wsdl:part name="Security" element="ns:Security"/>
</wsdl:message>

私が使用しているワークフローは、wsdl で xjc.exe を実行して JAXB アーティファクトを生成し、それらを使用して Web サービスを呼び出すことです。Spring WebServiceTemplate を使用して複数の部分を持つメッセージを呼び出すための適切なワークフローが何であるかを理解できないことを除いて、それはすべて良いことです。MyRequest オブジェクトと Security オブジェクト (複合型) を作成できますが、関数は次のようになります。

WebServiceTemplate().marshalSendAndReceive(オブジェクト requestPayload); 単一のオブジェクトのみを取ります。パーツではありません... このタイプの Web サービス操作を呼び出す正しい方法は何ですか?

4

1 に答える 1

0

回答が得られなかったのは、これが不可能だからだと思います。間違っている場合は訂正してください。ただし、WebServiceTemplate はラップされたWeb サービス呼び出しのみをサポートしているようです。つまり、単一の入力のみを送信し、単一の出力オブジェクトを受信する操作です。

2 つ以上のオブジェクトが配置されているこのような状況では、最も複雑なオブジェクトを作成し、呼び出しで Webservice コールバック関数を使用して、必要に応じてボディまたはヘッダーに SOAP 要素を手動で作成することが唯一の解決策となります。

marshalSendAndReceive()呼び出しでWebServiceMessageCallbackを使用し、関数で使用します。doWithMessage(WebServiceMessage message)

SOAPMessage soapMessage = ((SaajSoapMessage)message).getSaajMessage();

SOAP メッセージを取得して変更します。

于 2014-05-05T16:52:21.587 に答える