为什么我可以设置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);
答案 0 :(得分:5)
可以通过以下示例获取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) {
//
}
我得到以下肥皂故障:
<?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>
答案 1 :(得分:3)
故障代码定义了故障信息 SOAP 1.1规范。 SOAP 1.1中必须使用此元素。 因为故障代码必须是QName,所以最好 使用此方法的setFaultCode(Name)形式。
faultCode
-String
给出要设置的错误代码。它必须是 形式"prefix:localName"
,其中前缀已在a中定义 命名空间声明。
请注意,您设置的错误代码必须采用以下格式:prefix:localName
。您正在设置:Code X
,这就是您没有看到它的原因。使用this方法,一切正常。