java - 尝试使用 Web 服务时出现 SOAPFAULTEXCEPTION

标签 java eclipse web-services soap cxf

当我偶然发现一种情况时,我一直在尝试网络服务。相关详情为:

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

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Unmarshalling Error: unexpected element (uri:"----", local:"loginid"). Expected elements are <{}tokenstring>,<{}devicetype>,<{}loginid>,<{}password>,<{}deviceid> at 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) Caused by: org.apache.cxf.binding.soap.SoapFault: Unmarshalling Error: unexpected element (uri:"----", local:"loginid"). Expected elements are <{}tokenstring>,<{}devicetype>,<{}loginid>,<{}password>,<{}deviceid> at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:84) at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:51) at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:40) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113) at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:69) at org.apache.cxf.binding.soap.interceptor.CheckFaultInterceptor.handleMessage(CheckFaultInterceptor.java:34) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:835) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1606) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1502) at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1309) at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:627) at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:565) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:474) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:377) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:330) at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96) at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135) ... 2 more

有人可以告诉我发生了什么事以及我应该做什么来解决这个问题吗?谢谢。

最佳答案

看来您已经更改了 WSDL 中 XML 标记的顺序 loginid 是第三个,但现在服务器首先期望它。

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

关于java - 尝试使用 Web 服务时出现 SOAPFAULTEXCEPTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20259352/

相关文章:

java - 在 Java 中,哪个更快 - String.contains ("some text") 或查找相同文本的正则表达式?

java - eclipse : Java : OpenCV : "The import org cannot be resolved."

eclipse - 在命令行导入 eclipse 首选项

Java 编译器 API (Linux) : cannot find symbol for custom classes

java - 使用链式追加和使用多个+连接有什么区别

eclipse - Logcat只是显示级别标签

javax.xml.stream.XMLStreamException : DOCTYPE is not allowed

java - Web服务客户端: Use plain-text xml instead of object hierarchy

c# - 在 Azure Web 角色中为 WCF 端点添加额外的 SSL 行为

java - 动态地将RelativeLayout子级添加到父级布局不起作用