Hệ thống của chúng tôi tiêu thụ Dịch vụ Web SOAP, sử dụng các sơ đồ khách JAX-WS được tạo dựa trên WSDL của dịch vụ. Trong trường hợp máy chủ lỗi trả về lỗi SOAP như thế này:Cách nhận mã lỗi của lỗi SOAP khi xử lý lỗi ngoại lệ tùy chỉnh
<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>
Dựa trên WSDL SomeCustomFault
lớp ngoại lệ được tạo ra và tất cả các phương pháp dịch vụ được khai báo để ném này (xem dưới đây) là ngoại lệ.
@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;
}
}
Như bạn có thể thấy điều này ngoại lệ lỗi tùy chỉnh mở rộng Exception
và không SOAPFaultException. Hovewer tôi cần phải nhận được lỗi của lỗi SOAP mà có thể được lấy ra chỉ từ SOAPFaultException sử dụng phương pháp getFaultCode. Bạn có thể cho tôi biết làm thế nào tôi có thể đạt được mã lỗi SOAPFaultException hoặc SOAP lỗi tại nơi tôi bắt ở trên ngoại lệ lỗi tùy chỉnh được đề cập?
bạn không có quyền truy cập vào SOAPMessage được trả về như vậy không? –
No. Tôi chỉ ném ngoại lệ bị bắt trong mã của tôi – Nikoloz