我正在尝试使用 citrus-framework 进行简单的肥皂测试,但我无法让服务器接受该消息。经过一番挖掘,我发现发送的消息中不包含 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 Monitor 我看到的是这样的:
<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 配置文件:
<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"));