如何解决 SAXException: Invalid element in

Jer*_*ees 5 java axis wsdl web-services sax

我尝试通过以下方式从网络服务中获取结果。

List result = new Vector();
LibrarySearchRequest request = new LibrarySearchRequest(queryString);
LibrarySearchServicePortTypeProxy proxy = 
                                new LibrarySearchServicePortTypeProxy();
LibrarySearchServicePortType port = proxy.getLibrarySearchServicePortType();
LibrarySearchResponse response = port.process(request);
librarysearch.soft.Book[] books = response.getBooks();
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到以下异常(堆栈跟踪):

org.xml.sax.SAXException: Invalid element in librarysearch.soft.Book - book
at org.apache.axis.encoding.ser.BeanDeserializer.onStartChild(BeanDeserializer.java:258)
at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141)
at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236)
at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384)
at org.apache.axis.client.Call.invoke(Call.java:2467)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at librarysearch.soft.LibrarySearchServiceSOAP11BindingStub.process(LibrarySearchServiceSOAP11BindingStub.java:180)
at softarch.portal.db.ws.WS_RegularDatabase.findRecords(WS_RegularDatabase.java:44)
at softarch.portal.db.test.TestWSRegularDatabase.main(TestWSRegularDatabase.java:39)

The regular database has caught an unexpected exception: ; nested exception is: 
org.xml.sax.SAXException: Invalid element in librarysearch.soft.Book - book
Run Code Online (Sandbox Code Playgroud)

我读到这个问题可能是由于从 webservice 返回的结果与从 wsdl 生成的类不匹配造成的。我重新生成了我的网络服务客户端,但没有成功。还有什么问题?

Gui*_*sta 6

这可能与此错误 ( AXIS-2758 ) 有关,Axis 1.x 未解决。

如果您的客户端存根与服务器端(WSDL 文件)不是最新的,则可能会出现此问题。您可能必须重新生成它。就像axistools:wsdl2java 一样

如果您至少使用 Java 6,那么现在最好的方法可能是在客户端使用 JAX-WS(JAX-WS Maven 插件)。但是它不能与使用 RPC/Encoded 的旧 SOAP 服务一起工作......更喜欢文档/文字样式。