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

发布于 2024-11-30 13:18:19 字数 917 浏览 0 评论 0原文

我们正在运行 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 信封”,但我无法通过 google 找到正确的术语。

如何配置 Axis (client-config.wsdd) 或需要实现哪些处理程序才能正确处理 HTTP 错误代码 >= 400 的 Web 服务回复?

谢谢 西蒙

We're running an Axis 1 Java client. The web service will sometime return an HTTP error code 500 along with some meaningless HTML body content. In such cases, we get a

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) 

I'm certain there's an easy way to catch HTTP errors such that no class attempts to read the SOAP envelope, but I haven't been able to find the right terms to google.

How do I configure Axis (client-config.wsdd) or which handlers do I need to implement so that a webservice reply with an HTTP error code >= 400 can be properly handled?

Thanks
Simon

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦幻的心爱 2024-12-07 13:18:19

原因在于轴本身。

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

将记录(级别调试)

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

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

西蒙

The cause is in Axis itself.

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

will log (level debug)

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

If there is no valid SOAP envelope, that call causes the stacktrace above.

Simon

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文