我将尝试使用以下代码在Spring WS(java)中捕获SOAP Web服务中的异常:
String faultString = "String Y";
String faultCodeValue = "Code X";
QName faultCode = new QName("http://schemas.xmlsoap.org/soap/envelope/", faultCodeValue);
SOAPFault soapFault = null;
soapFault = SOAPFactory.newInstance(SOAPConstants.SOAP_1_1_PROTOCOL).createFault(faultString, faultCode);
throw new SOAPFaultException(soapFault);
然而,我总是得到相同的<faultcode>
像这个(<faultcode>SOAP-ENV:Server</faultcode>)
(even当我更改faultCodeValue
变量中的值时):
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring xml:lang="en">String Y</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
是否有人知道如何在Web服务响应中更改此值?
2条答案
按热度按时间ohfgkhjo1#
实际上,我无法得到它。你抛出FaultException,然后捕捉并创建一些SOAPMessage?没有QName,我得到了预期的结果。
响应;
sg24os4d2#
您可以通过多种方式实现此目的。如果您需要在SOAP响应中返回动态自定义错误代码,请执行以下操作:
1.声明一个类,它扩展了Spring SoapFaultMappingExceptionResolver类
1.在上面声明的类中,重写
protected SoapFaultDefinition getFaultDefinition(Object endpoint, Exception ex)
方法并提供自定义实现,如下所示:您可以通过覆盖
这个类别的。