当我使用自动生成的ServiceBindingStub.java时,我收到此错误。 WebService端工作正常,所以这个错误必须在代码中,但代码是自动生成的,所以我不知道为什么它不起作用。其他一些调用工作正常,但事实并非如此。此调用包括更新,而其他工作调用只是从WebService获取数据。
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: org.xml.sax.SAXParseException: Premature end of file.
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException: Premature end of file.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
答案 0 :(得分:7)
当您连接的服务不返回SOAP响应,而是返回某些文本或HTML时,会发生这种情况。尝试在浏览器中打开URL或使用一些SOAP调试器(如SOAP UI)来查看从服务返回的内容。
答案 1 :(得分:2)
我曾经遇到过同样的问题。就我而言,我收到了标签之间带有“二进制数据”的消息(图像)。 Axis使用固定大小的缓冲区来读取数据,一旦缓冲区已满,它就会继续运行并且不同步。
实际上,您应该能够通过逐步调试存根代码来查找xml文件中的标记或部分。不能保证,问题可以轻松解决,但它可能会提示您(a)存根未正确生成或(b)xml文件格式不正确或对已使用的模式有效生成存根。
祝你好运! (我没有解决我的问题..)答案 2 :(得分:0)
根据Superfilin的回答,我刚刚(并解决了)这个问题。最后,问题结果是我没有为我在deployment.wsdd文件中返回的其中一个类添加<beanMapping>
。只要响应包含该类,我就会得到一个完全空的消息体。
答案 3 :(得分:0)
即使我们遇到了同样的问题。但内容中有一些特殊字符。我们删除了那些特殊字符并且工作正常。