我正在使用基于 SOAP 的 JAX-WS 实现 Web 服务客户端。其错误码返回方式如下:
<?xml version = '1.0' encoding = 'UTF-8'?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<env:Header>
<!-- header stuff goes here -->
</env:Header>
<env:Body>
<env:Fault>
<abc:fault xmlns:abc="http://example.com/abc">
<abc:faultcode>12345</abc:faultcode>
<abc:faultstring>Error message goes here</abc:faultstring>
</abc:fault>
</env:Fault>
</env:Body>
</env:Envelope>
据我所知,这不是解决 SOAP 错误的正确方法。env:Fault 的子元素应该是<faultcode>
and <faultstring>
,而不是不同的命名空间<fault>
。不幸的是,我无法让 Web 服务改变这一点。
我希望我能够在 SOAPHandler 中解析此消息并将其转换为常规错误,然后再将其传递给我的其余代码,但是当我在较早的 Handler 中记录消息时,我看到 Fault 元素完全空的。没了<abc:fault>
!
我在 WebSphere 7 上使用 JAX-WS,并尝试在我的系统属性中将“jaxws.payload.highFidelity”设置为 true。有关如何获取原始消息的任何线索?
不理会这个将导致带有 NullPointerException 的 WebServiceException,因为 JAX-WS 找不到故障代码。