java.lang.illegalstateexception no outpu_java.lang.IllegalStateException:没有注册解组器...

当我向服务器发送SOAP请求时,它返回以下错误.我不确定如何配置解组器,我将向多个Web服务发送SOAP请求. WSDL是here.

我访问了以下页面,但找不到解决方案. 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( <<< ERROR is on this line

"http://www5v80.elsyarres.net/service.asmx",

searchFlights,

new WebServiceMessageCallback() {

public void doWithMessage(WebServiceMessage message)

{

((SoapMessage)message).setSoapAction("http://www5v80.elsyarres.net/searchFlights");

}

}

);

Response msg = (Response) response;

System.err.println("Wegolo >>>"

+ msg.getFlights().getFlight().size());

} catch (Exception s) {

s.printStackTrace();

}

d3ddb2d1c49c0534d7e4cb5b178dacd2.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值