Spring Webservice Client - 在响应中返回空soapAction"消息部分请求未被识别"

时间:2018-01-08 18:58:21

标签: java spring soap soap-client spring-ws

我使用spring webservices来使用服务。我正在关注这篇文章https://spring.io/guides/gs/consuming-web-service/,我通过扩展WebServiceGatewaySupport并使用它来调用服务来创建客户端。

我首先怀疑的是我还没有从wsdl生成任何java类(除了wsdl中提到的类型的jaxb对象)。我不必在客户端生成存根(端点)类吗?如果没有,那么Spring如何知道要调用哪个操作,因为我的wsdl有多个操作?

这是我的代码

public class SOAPConnector extends WebServiceGatewaySupport {

    public Object callWebService(String url, Object request){
        return getWebServiceTemplate().marshalSendAndReceive(url, request);
    }
}

@Configuration
public class Config {
    @Bean
    public Jaxb2Marshaller marshaller() {
        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        // this is the package name specified in the <generatePackage> specified in
        // pom.xml
        marshaller.setContextPath("com.example.howtodoinjava.schemas.school");
        return marshaller;
    }

    @Bean
    public SOAPConnector soapConnector(Jaxb2Marshaller marshaller) {
        SOAPConnector client = new SOAPConnector();
        client.setDefaultUri("https://www.example.com/ExampleServiceBean");
        client.setMarshaller(marshaller);
        client.setUnmarshaller(marshaller);
        return client;
    }
}

第二个问题是,在执行上面的代码时,我收到以下错误消息,有人可以帮我解决问题:

org.springframework.ws.soap.client.SoapFaultClientException: Message part Request was not recognized.  (Does it exist in service WSDL?)

    at org.springframework.ws.soap.client.core.SoapFaultMessageResolver.resolveFault(SoapFaultMessageResolver.java:38)
    at org.springframework.ws.client.core.WebServiceTemplate.handleFault(WebServiceTemplate.java:830)
    at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:624)
    at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:555)
    at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:506)
    at org.springframework.ws.client.core.WebServiceTemplate.sendSourceAndReceiveToResult(WebServiceTemplate.java:446)
    at org.springframework.ws.client.core.WebServiceTemplate.sendSourceAndReceiveToResult(WebServiceTemplate.java:436)
    at org.springframework.ws.client.core.WebServiceTemplate.sendSourceAndReceiveToResult(WebServiceTemplate.java:424)

我可能是一个非常基本的东西,因为我第一次使用spring webservices。提前致谢。

0 个答案:

没有答案