2012-09-23 6 views
8

Warum kann ich einen FaulString setzen, aber kann ich keinen benutzerdefinierten Fehlercode in einem SOAPFault festlegen? Wenn die Ausnahme ausgelöst wird, wird der Text "Code X" nicht in der SoapFaultException angezeigt. Jemand könnte mir sagen warum? Vielen Dank.Wie setze ich einen Fehlercode in einem SOAPFault?

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

throw new SOAPFaultException(soapFault); 

Antwort

3

Von documentation:

Fehlercodes, die Informationen über den Fehler gegeben, in die SOAP 1.1-Spezifikation definiert. Dieses Element ist in SOAP 1.1 obligatorisch. Da der Fehlercode ein QName sein muss, ist es vorzuziehen, die setFaultCode (Name) -Form dieser Methode zu verwenden.

faultCode - a String Geben Sie den Fehlercode ein, der eingestellt werden soll. Es muss von das Formular "prefix:localName" sein, in dem das Präfix in einer Namespacedeklaration definiert wurde.

Beachten Sie, dass der Fehlercode, den Sie einstellen, dieses Format haben muss: prefix:localName. Du stellst ein: Code X, deshalb siehst du es nicht. Verwenden Sie this Methode und alles sollte in Ordnung sein.

3

Es ist möglich, den Fehlercode in der Seifen Antwort mit dem folgenden Beispiel zu bekommen:

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) { 
    // 
} 

ich die Seife folgenden Fehler zurück:

<?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> 
Verwandte Themen