Spring-WS と WebServiceTemplate を使用して SOAP WebService を呼び出しています。現在、SOAP ヘッダーの更新中に問題に直面しています。
以下は、SOAP リクエストの完全な構造です。
<SOAP:envlope>
<SOAP:Header>
<Security>
<username>?</username>
<password>?</password>
</Security>
<MessageData>
<ClientIP>?</ClientIP>
</MessageData>
</SOAP:Header>
<SOAP:Body>
<Login/>
</SOAP:Body>
</SOAP:envlope>
上記のように、ヘッダーに 2 つの要素を含める必要があります。WebServiceTemplate の SOAP のヘッダーを更新するコードを以下に示します。
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new StringSource(soapHeaderStr), ((SoapMessage) message).getSoapHeader().getResult());
しかし、2 つの要素 (文字列) でヘッダーを更新しようとすると、以下のエラー メッセージが表示されます。
SOAPHeaderString
<Security>
<username>?</username>
<password>?</password>
</Security>
<MessageData>
<ClientIP>?</ClientIP>
</MessageData>
エラー
[Fatal Error] :1:197: The markup in the document following the root element must be well-formed.
ERROR: 'The markup in the document following the root element must be well-formed.'
その理由は、Security
andMessageData
要素にはルート要素がなく、そうであってはならないからです。
そのような場合、どうすればヘッダーを更新できますか?
ありがとう