如何在Axis 1客户端中处理HTTP错误代码

时间:2011-08-19 11:46:55

标签: java http webclient axis

我们正在运行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服务回复?

由于 西蒙

1 个答案:

答案 0 :(得分:0)

原因在于Axis本身。

org.apache.axis.transport.http.HTTPSender#readFromSocket()

将记录(级别调试)

log.debug(outMsg.getSOAPEnvelope().toString());

如果没有有效的SOAP信封,那么该调用会导致上面的堆栈跟踪。

西蒙