如何在SOAPFault中设置faultCode?

Dav*_*vid 8 java soap soapfault

为什么我可以设置faulString,但是我不能在SOAPFault中设置自定义错误代码?当我抛出异常时,文本"Code X"没有出现在SoapFaultException中.有人可以告诉我为什么?谢谢.

SOAPFault soapFault = SOAPFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL).createFault();
soapFault.setFaultString("String Y")
soapFault.setFaultCode("Code X");

throw new SOAPFaultException(soapFault);
Run Code Online (Sandbox Code Playgroud)

小智 6

可以使用以下示例获取soap响应中的错误代码:

String faultString = "String Y";
String faultCodeValue = "Code X";
QName faultCode = new QName("nameSpaceURI", faultCodeValue);
SOAPFault soapFault = null;
try {
    soapFault = SOAPFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL).createFault(faultString, faultCode);
    throw new javax.xml.ws.soap.SOAPFaultException(soapFault);
} catch (SOAPException e1) {
    //
}
Run Code Online (Sandbox Code Playgroud)

我得到以下肥皂故障:

<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
        <S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope" xmlns="">
        <faultcode xmlns:ns0="nameSpaceURI">ns0:Code X</faultcode>
        <faultstring>String Y</faultstring>
        </S:Fault>
    </S:Body>
</S:Envelope>
Run Code Online (Sandbox Code Playgroud)


Pau*_*nis 4

来自文档

故障代码给出了有关故障的信息,在 SOAP 1.1 规范中定义。该元素在 SOAP 1.1 中是强制性的。由于故障代码必须是 QName,因此最好使用此方法的 setFaultCode(Name) 形式。

faultCode-String给出要设置的故障代码。它必须采用"prefix:localName"在命名空间声明中定义前缀的形式。

请注意,您设置的故障代码必须采用以下格式:prefix:localName。您正在设置:Code X,这就是您看不到它的原因。使用这个方法,一切应该就OK了。