2011-08-19 66 views
1

我们运行的是Axis 1 Java客户端。 Web服务有时会返回HTTP错误代码500以及一些无意义的HTML主体内容。在这种情况下,我们得到了一个如何处理Axis 1客户端中的HTTP错误代码

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

的原因是轴本身。

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

将记录(级调试)

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

如果没有有效的SOAP信封,该呼叫引起上面的堆栈跟踪。

Simon