我们正在运行Axis 1 Java客户端。 Web服务有时会返回HTTP错误代码500以及一些无意义的HTML正文内容。在这种情况下,我们得到一个
javax.xml.soap.SOAPException: org.xml.sax.SAXParseException: Content is not allowed in prolog. at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.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.transport.http.HTTPSender.readFromSocket(HTTPSender.java:796)
我确信有一种简单的方法可以捕获HTTP错误,以至于没有类尝试读取SOAP信封,但我无法找到合适的谷歌条款。
如何配置Axis(client-config.wsdd)或我需要实现哪些处理程序,以便正确处理HTTP错误代码> = 400的Web服务回复?
由于 西蒙
答案 0 :(得分:0)
原因在于Axis本身。
org.apache.axis.transport.http.HTTPSender#readFromSocket()
将记录(级别调试)
log.debug(outMsg.getSOAPEnvelope().toString());
如果没有有效的SOAP信封,那么该调用会导致上面的堆栈跟踪。
西蒙