java.lang.IllegalStateException:没有注册unmarshaller。 检查WebServiceTemplate的配置

当我向服务器发送SOAP请求时,它返回以下错误。 我不确定如何配置unmarshaller,我将向多个web服务发送SOAP请求。 WSDL就在这里 。

我访问了以下页面但尚未找到解决方案。 1,2,3

java.lang.IllegalStateException: No unmarshaller registered. Check configuration of WebServiceTemplate. at org.springframework.ws.client.core.WebServiceTemplate$3.extractData(WebServiceTemplate.java:406) at org.springframework.ws.client.core.WebServiceTemplate.doSendAndReceive(WebServiceTemplate.java:598) at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:539) at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:386) 

SearchFlights

 @XmlRootElement(name = "SearchFlights") @XmlAccessorType(XmlAccessType.FIELD) public class SearchFlights { @XmlElement(name = "SoapMessage") private SoapMessage soapMessage; getter and setter 

的SOAPMessage

 @XmlRootElement(name = "SoapMessage") @XmlAccessorType(XmlAccessType.FIELD) public class SoapMessage { @XmlElement(name = "Username") private String username; @XmlElement(name = "Password") private String password; @XmlElement(name = "LanguageCode") private String languageCode; @XmlElement(name = "Request") private Request request; getters and setters 

请求

 @XmlRootElement(name = "Request") @XmlAccessorType(XmlAccessType.FIELD) public class Request { @XmlElement(name = "Departure") private String departure; @XmlElement(name = "Destination") private String destination; @XmlElement(name = "DepartureDate") private String departureDate; @XmlElement(name = "ReturnDate") private String returnDate; @XmlElement(name = "NumADT") private int numADT; @XmlElement(name = "NumINF") private int numInf; @XmlElement(name = "NumCHD") private int numCHD; @XmlElement(name = "CurrencyCode") private String currencyCode; @XmlElement(name = "WaitForResult") private boolean waitForResult; @XmlElement(name = "NearByDepartures") private boolean nearByDepartures; @XmlElement(name = "NearByDestinations") private boolean nearByDestinations; @XmlElement(name = "RROnly") private boolean rronly; @XmlElement(name = "MetaSearch") private boolean metaSearch; getters and setters 

jaxb.in​​dex

 SearchFlights Flight Flights Leg Legs Outbound Request Response SoapMessage 

代码发送请求

 import javax.xml.soap.MessageFactory; import javax.xml.soap.SOAPConstants; import org.springframework.oxm.jaxb.Jaxb2Marshaller; import org.springframework.stereotype.Service; import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; import org.springframework.ws.client.core.WebServiceTemplate; import org.springframework.ws.soap.saaj.SaajSoapMessageFactory; ...... // populate searchFlights and other classes to create request try { SaajSoapMessageFactory messageFactory = new SaajSoapMessageFactory( MessageFactory.newInstance()); messageFactory.afterPropertiesSet(); WebServiceTemplate webServiceTemplate = new WebServiceTemplate( messageFactory); Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); marshaller.setContextPath("com.myproject.flights.wegolo"); marshaller.afterPropertiesSet(); webServiceTemplate.setMarshaller(marshaller); webServiceTemplate.afterPropertiesSet(); Response response = (Response) webServiceTemplate .marshalSendAndReceive( <<>>" + msg.getFlights().getFlight().size()); } catch (Exception s) { s.printStackTrace(); } 

在此处输入图像描述

您似乎没有在webServiceTemplate上设置unmarshaller

 webServiceTemplate.setMarshaller(marshaller); webServiceTemplate.setUnmarshaller(marshaller);