我們的系統使用基於服務的WSDL生成的JAX-WS客戶端存根控件來使用SOAP Web服務。在錯誤的服務器的情況下返回SOAP錯誤是這樣的:如何在處理自定義故障異常時獲取SOAP故障的錯誤代碼
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header />
<s:Body>
<s:Fault>
<faultcode>SomeErrorCode</faultcode>
<faultstring xml:lang="en-US">Some error message</faultstring>
<detail>
<ApiFault xmlns="http://somenamespace.com/v1.0" xmlns:a="http://somenamespace.com/v1.0" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:RequestId>123456789</a:RequestId>
<a:CanRetry>true</a:CanRetry>
</ApiFault>
</detail>
</s:Fault>
</s:Body>
基於WSDL SomeCustomFault
異常類生成和所有的服務方法都聲明瞭這一點(見下文)例外。
@WebFault(name = "ApiFault", targetNamespace = "http://services.altasoft.ge/orders/v1.0")
public class SomeCustomFault
extends Exception
{
private ApiFault faultInfo;
public SomeCustomFault(String message, ApiFault faultInfo) {
super(message);
this.faultInfo = faultInfo;
}
public SomeCustomFault(String message, ApiFault faultInfo, Throwable cause) {
super(message, cause);
this.faultInfo = faultInfo;
}
public ApiFault getFaultInfo() {
return faultInfo;
}
}
正如你可以看到這個定製的故障異常延伸Exception
而不是SOAPFaultException。 Hovewer我需要獲取SOAP故障的錯誤代碼,可以使用getFaultCode方法從SOAPFaultException中檢索。你能告訴我怎樣才能達到SOAPFaultException或SOAP故障的錯誤代碼在哪裏我趕上上面提到的自定義錯誤異常?
您沒有權限訪問返回的SOAPMessage嗎? –
不,我只拋出了我的代碼中發現的異常 – Nikoloz