Java - 如何显示 Soap Fault

标签 java web-services netbeans jax-ws soapfault

当 Soap Fault 调用 Java Web 服务时,我有这种响应

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <soap:Fault>
            <faultcode>soap:Server</faultcode>
            <faultstring>Fault occurred while processing.</faultstring>
            <detail>
                <ns1:WaybillRegistrationFault xmlns:ns1="http://pod.waybillmanagement.ws.industrysystem.com.ar/">
                    <errors xmlns:ns2="http://pod.waybillmanagement.ws.industrysystem.com.ar/">
                        <code>80000</code>
                        <description>El número de CTG 20140904 ya existe</description>
                    </errors>
                    <errors xmlns:ns2="http://pod.waybillmanagement.ws.industrysystem.com.ar/">
                        <code>1000</code>
                        <description>La carta de porte ya se encuentra registrada.</description>
                    </errors>
                </ns1:WaybillRegistrationFault>
            </detail>
        </soap:Fault>
    </soap:Body>
</soap:Envelope>

我用它的 handleFault 方法做了一个 Soap Handler,如下所示: public boolean handleFault(SOAPMessageContext context) {

    try {
        System.err.println("Handler handleFault");

        if (context.getMessage().getSOAPBody().hasFault()) {
            SOAPFault fa = context.getMessage().getSOAPBody().getFault();
            System.err.println(fa.getFaultString());
            System.err.println("FaultCode: " + fa.getFaultCode() + " - Detail: " + fa.getDetail());
        }
        return true;
    } catch (SOAPException ex) {
        System.err.println("SoapEx " + ex.getMessage());
        return true;
    }
}

但是在我的输出中我只有:

Handler handleFault
Fault occurred while processing.
FaultCode: soap:Server - Detail: [detail: null]

如何处理错误节点?

更新:

使用 fa.getDetail().getFirstChild().getTextContent() 我在 xml 中获取文本。我怎样才能把它作为一个对象。我认为这是 WaybillRegistrationFault。

最佳答案

这是我处理 soap 错误的一贯方式:

StringWriter sw = new StringWriter();
TransformerFactory.newInstance().newTransformer().transform(
new DOMSource(soapFaultException.getFault()), new StreamResult(sw));
String xml = sw.toString();

关于Java - 如何显示 Soap Fault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25771670/

相关文章:

java.lang.NoSuchFieldError : VERSION_2_3_0 错误

javascript - Android WebView "Cannot read property ' getAttribute' 未定义”

javascript - 从 Web 服务 (asmx) 页面引用 asp.net 页面上的字段

java - 无法将放置在 src/main/resources/static/css/folder 中的 css 文件提供给 Spring boot 应用程序中的客户端

java - 从 Hibernate 4.3.1 切换到 5.0.6 并且事务消失了

java - 如何在Java中使用自己的数据创建vcard?

java - 在java中检查字符串/字符串[]是否为空或 ""

java - Spring RestTemplate 响应时间慢

python - 如何在 python 中将字符串数据转换为 JSON 对象?

netbeans - 在 Netbeans 7.3 中更改远程 glassfish 服务器端口