Web services 通过SpringWebServiceTemplate使用第三方web服务
我试图通过提供的wsdl文件使用第三方web服务。我将从WEB-INF文件夹下基于Spring-J2EE的项目本地加载该文件 wsdl可能公开了多个操作。所以我需要一种方法来选择要调用的方法。我还需要使用JaxbMarshaller 有人能帮我写一段代码吗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
感谢您的帮助。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();
}
}