Spring ws 操作 'message' 未在 WSDL 中为此服务定义



嗨,我正在尝试使用spring-ws创建一个soap客户端。我尝试了下面的代码:

public void test1() {
    WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
    webServiceTemplate.setDefaultUri("the url of my web service");
    StreamSource source = new StreamSource(new StringReader("<message xmlns="http://tempuri.org">Hello Web Service World</message>"));
    StreamResult result = new StreamResult(System.out);
    webServiceTemplate.sendSourceAndReceiveToResult(source, result);
}

from http://docs.spring.io/spring-ws/site/reference/html/client.html and I got this exception .

org.springframework.ws.soap.client.SoapFaultClientException: Operation 'message' is not defined in the WSDL for this service
        at org.springframework.ws.soap.client.core.SoapFaultMessageResolver.resolveFault(SoapFaultMessageResolver.java:37)
        at org.springframework.ws.client.core.WebServiceTemplate.handleFault(WebServiceTemplate.java:774)
        at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:600)
        at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:537)
        at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:492)
        at org.springframework.ws.client.core.WebServiceTemplate.sendSourceAndReceiveToResult(WebServiceTemplate.java:436)
        at org.springframework.ws.client.core.WebServiceTemplate.sendSourceAndReceiveToResult(WebServiceTemplate.java:427)
        at org.springframework.ws.client.core.WebServiceTemplate.sendSourceAndReceiveToResult(WebServiceTemplate.java:417)
        at Test.test1

如何修复

好的,我解决了,在这个问题中有一个错误发生的例子,

我使用netcat作为客户端,得到以下结果:

POST / HTTP/1.1
Accept-Encoding: gzip
Accept: text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
SOAPAction: ""
Content-Type: text/xml; charset=utf-8
Cache-Control: no-cache
Pragma: no-cache
User-Agent: Java/1.7.0_55
Host: localhost:1234
Connection: keep-alive
Content-Length: 154
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><message xmlns="http://tempuri.org">Hello Web Service World</message></SOAP-ENV:Body></SOAP-ENV:Envelope>

在这个测试中,消息不是服务器所期望的。但我明白这个问题。我认为spring ws没有创建soap信封,所以消息有两个信封。

最新更新