【发布时间】:2017-08-10 07:45:50
【问题描述】:
我真的对来自 SOAP 服务的响应的解组问题感到困惑。我正在使用 springboot 应用程序和 WebServiceTemplate 来调用现有的 SOAP 服务。我正在使用下面的代码来设置用于编组和 webservicetemplate 的 bean。非常感谢任何帮助。
致电webServiceTemplate.marshalSendAndReceive(request); 我期待TravelResponse object 但它给了我JAXBElement<TravelResponse> object 作为回应。我需要帮助才能理解
1)为什么它给出上述响应而不是TravelResponse
2) 如何转换成TravelResponse
下面的代码sn-p:
@Bean
Jaxb2Marshaller jaxb2Marshaller() {
Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller();
jaxb2Marshaller.setContextPath("com.cater.trip.simple_api.trip.v1");
return jaxb2Marshaller;
}
@Bean
public WebServiceTemplate webServiceTemplate() throws Exception {
WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
webServiceTemplate.setMessageFactory(getMessageFactory());
webServiceTemplate.setMarshaller(jaxb2Marshaller());
webServiceTemplate.setUnmarshaller(jaxb2Marshaller());
webServiceTemplate.setDefaultUri(defaultUri);
webServiceTemplate.setMessageSender(getMessageSender());
return webServiceTemplate;
}
@Bean
public SaajSoapMessageFactory getMessageFactory() {
return new SaajSoapMessageFactory();
}
@Bean
public HttpComponentsMessageSender getMessageSender() {
return new HttpComponentsMessageSender();
}
@Override
public Object getData( ) {
ObjectFactory clientFac = new ObjectFactory();
TravelRequest request = populateRequest(clientFac);
TravelResponse res = (TravelResponse) webServiceTemplate.marshalSendAndReceive(request);
return res;
}
【问题讨论】:
标签: web-services spring-boot soap