尝试使用Web服务时SOAPFAULTEXCEPTION

时间:2013-11-28 06:41:11

标签: java eclipse web-services soap cxf

当我偶然发现情况时,我一直在尝试使用网络服务。相关细节如下:

  • 我正在使用eclipse,cxf和tomcat。
  • 我创建了一个打印hello的简单Web服务。它的方法中没有任何参数。当我从客户端调用此Web服务时,一切正常。
  • 但是,当我在方法中创建带有参数的Web服务时,我得到了一个奇怪的例外:
  

线程“main”中的异常javax.xml.ws.soap.SOAPFaultException:   Unmarshalling Error:意外元素(uri:“----”,local:“loginid”)。   预期的要素是   < {} tokenstring>,< {}的devicetype>,< {}登录ID>,< {}密码>,< {}设备ID>     在   org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:157)     at $ Proxy29.getUserInformation(Unknown Source)at   servicepackage.ServiceClassPortType_ServiceClassPort_Client.main(ServiceClassPortType_ServiceClassPort_Client.java:71)   引起:org.apache.cxf.binding.soap.SoapFault:Unmarshalling Error:   意外元素(uri:“----”,local:“loginid”)。预期的要素   是   < {} tokenstring>,< {}的devicetype>,< {}登录ID>,< {}密码>,< {}设备ID>     在   org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:84)     在   org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:51)     在   org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:40)     在   org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)     在   org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113)     在   org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69)     在   org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34)     在   org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)     在org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:835)     在   org.apache.cxf.transport.http.HTTPConduit $ WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1606)     在   org.apache.cxf.transport.http.HTTPConduit $ WrappedOutputStream.handleResponse(HTTPConduit.java:1502)     在   org.apache.cxf.transport.http.HTTPConduit $ WrappedOutputStream.close(HTTPConduit.java:1309)     在   org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)     在   org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:627)     在   org.apache.cxf.interceptor.MessageSenderInterceptor $ MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)     在   org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)     在org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:565)     在org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:474)at   org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:377)at at   org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:330)at at   org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)     在   org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)     ......还有2个

有人可以告诉我发生了什么,我该怎么做才能解决这个问题?感谢。

1 个答案:

答案 0 :(得分:2)

您似乎已经更改了WSDL中XML标记的顺序 loginid是第三个,但现在服务器首先需要它。

重新生成Web服务客户端,然后尝试。