我真的被来自SOAP服务的响应的解组问题困扰着。我使用springboot应用程序和WebServiceTemplate来调用现有的SOAP服务。我正在使用下面的代码来设置用于编组和webservicetemplate的bean。任何帮助,高度赞赏。Springboot SOAP服务解组来自WebServiceTemplate的响应问题
打电话webServiceTemplate.marshalSendAndReceive(request);
我期待TravelResponse object
,但它给我JAXBElement<TravelResponse> object
作为回应。我需要帮助理解
1)为什么是让上面的响应,而不是TravelResponse
2)如何转换为TravelResponse
代码片断如下:
@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;
}