citrus-framework で簡単な SOAP テストを実行しようとしていますが、サーバーがメッセージを受け入れることができません。掘り下げた後、送信されたメッセージにxml宣言タグが含まれていないことがわかりました。
ログによると、送信する必要があります。
02:06:21,600 DEBUG xml.XmlConfigurer| Using DOMImplementationLS:
org.apache.xerces.dom.CoreDOMImplementationImpl 02:06:21,623 DEBUG
ingClientInterceptor| Sending SOAP request 02:06:21,624 DEBUG
Logger.Message_OUT| <?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/> <SOAP-ENV:Body>
しかし、TCP/IP モニターからは、通過しているのが次のように表示されます。
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/><SOAP-ENV:Body>
したがって、ロガーによるとそこにあることが期待されますが、パイプを介して何が来るかを確認すると、そうではありません。
不足しているのは xml 宣言 (<?xml version="1.0" encoding="UTF-8"?>) であり、同じメッセージをサーバーに直接送信し、それを使用せずにサーバーが処理することを確認しました柑橘類のテストを実行したときと同じ結果になります(失敗します)。
強制的に送信する方法はありますか?柑橘類の糸と春で検索しましたが、解決策が見つかりませんでした.
私のcitrus-ws conf:
<citrus-ws:client id="soapClient"
request-url="http://localhost:8880/WS.asmx" timeout="60000"
message-factory="soapMessageFactory"/>
Java DSL ブロック:
soap().client("soapClient")
.send()
.name("testsend")
.charset("UTF-8")
.contentType("text/xml")
.payload(new ClassPathResource("com/i/B.xml"));