Web services 通过SpringWebServiceTemplate使用第三方web服务

Web services 通过SpringWebServiceTemplate使用第三方web服务,web-services,spring,wsdl,spring-ws,webservicetemplate,Web Services,Spring,Wsdl,Spring Ws,Webservicetemplate,我试图通过提供的wsdl文件使用第三方web服务。我将从WEB-INF文件夹下基于Spring-J2EE的项目本地加载该文件 wsdl可能公开了多个操作。所以我需要一种方法来选择要调用的方法。我还需要使用JaxbMarshaller 有人能帮我写一段代码吗 感谢您的帮助。WebServiceTemplate和SpringWS通常不会将WSDL作为起点。相反,它是面向模式的 使用WebServiceTemplate时,插入JaxmMarshaller,然后调用marshalSendAndRecei

我试图通过提供的wsdl文件使用第三方web服务。我将从WEB-INF文件夹下基于Spring-J2EE的项目本地加载该文件

wsdl可能公开了多个操作。所以我需要一种方法来选择要调用的方法。我还需要使用JaxbMarshaller

有人能帮我写一段代码吗


感谢您的帮助。

WebServiceTemplate和SpringWS通常不会将WSDL作为起点。相反,它是面向模式的

使用WebServiceTemplate时,插入JaxmMarshaller,然后调用marshalSendAndReceiver方法,传入包含要调用的SOAP操作的SoapActionCallback。您可以从WSDL获取SOAP操作URI。WebServiceTemplate将封送您的请求,用您指定的SOAP操作将其包装在WSDL信封中,然后启动它


如果您想要一个从WSDL生成存根的框架,那么SpringWS不适合您。

这是调用web服务的简单方法。详情

public void createSoapActionCallBack(ValidateCardRequest ValidateCardRequest){
//这用于发送标题消息
SoapActionCallback actionCallBack=新的SoapActionCallback(soapAction);
试一试{
actionCallBack=新的SoapActionCallback(SOAPACTION\u默认\u URL){
公共无效消息(WebServiceMessage消息){
SoapMessage smsg=(SoapMessage)消息;
SoapHeader-SoapHeader=smsg.getSoapHeader();
试一试{
//发送头消息
StringSource headerSource=新的StringSource(“\n”+
“+”ABCD“+”\n+
“+”ABCD“+”\n+
"");
Transformer Transformer=TransformerFactory.newInstance().newTransformer();
transform(headerSource,soapHeader.getResult());
smsg.setSoapAction(soapAction);
}捕获(例外e)
{
e、 printStackTrace();
}
}
}; 
validateCardResponse=(FVValidateCardResponse)webServiceTemplate.marshalSendAndReceive(URL、validateCardRequest、actionCallBack);
}捕获(例外e){
e、 printStackTrace();
}       
}
public void createSoapActionCallBack(ValidateCardRequest validateCardRequest) {

        //This is used to send header message
        SoapActionCallback actionCallBack=new SoapActionCallback(soapAction);
        try{

            actionCallBack = new SoapActionCallback(SOAPACTION_DEFAULT_URL) {
            public void doWithMessage(WebServiceMessage msg) {
                    SoapMessage smsg = (SoapMessage)msg;                
                    SoapHeader soapHeader = smsg.getSoapHeader();

                    try{
                        //To send header message
                        StringSource headerSource = new StringSource("<UserCredentials xmlns='URL'>\n" +
                                        "<userid>"+"ABCD"+"</userid>\n" +
                                        "<password>"+"ABCD"+"</password>\n" +
                                        "</UserCredentials>");
                        Transformer transformer = TransformerFactory.newInstance().newTransformer();
                        transformer.transform(headerSource, soapHeader.getResult());

                        smsg.setSoapAction(soapAction);
                    }catch(Exception e)
                    {
                        e.printStackTrace();
                    }
                }
                }; 
               validateCardResponse = (FVValidateCardResponse) webServiceTemplate.marshalSendAndReceive(URL, validateCardRequest, actionCallBack);  

            } catch (Exception e) {
                e.printStackTrace();
            }       
}