SOAP - Lỗi
Nếu một lỗi xảy ra trong quá trình xử lý, phản hồi cho một bản tin SOAP là một phần tử lỗi SOAP trong phần thân của bản tin và lỗi được trả lại cho người gửi bản tin SOAP.
Cơ chế lỗi SOAP trả về thông tin cụ thể về lỗi, bao gồm mã được xác định trước, mô tả và địa chỉ của bộ xử lý SOAP đã tạo ra lỗi.
Điểm cần lưu ý
Một bản tin SOAP chỉ có thể mang một khối lỗi.
Lỗi là một phần tùy chọn của thông báo SOAP.
Đối với liên kết HTTP, một phản hồi thành công được liên kết với dải mã trạng thái từ 200 đến 299.
SOAP Fault được liên kết với dải mã trạng thái từ 500 đến 599.
Các yếu tố phụ của Lỗi
SOAP Fault có các phần tử phụ sau:
Sr.No | Yếu tố phụ & Mô tả |
---|---|
1 | <faultCode> Nó là một mã văn bản được sử dụng để chỉ ra một lớp lỗi. Xem Bảng tiếp theo để biết danh sách các mã lỗi được xác định trước. |
2 | <faultString> Đó là một tin nhắn văn bản giải thích lỗi. |
3 | <faultActor> Nó là một chuỗi văn bản cho biết ai đã gây ra lỗi. Sẽ rất hữu ích nếu thông báo SOAP đi qua một số nút trong đường dẫn thông báo SOAP và máy khách cần biết nút nào đã gây ra lỗi. Một nút không đóng vai trò là đích cuối cùng phải bao gồm một phần tử errorActor . |
4 | <detail> Nó là một phần tử được sử dụng để mang các thông báo lỗi dành riêng cho ứng dụng. Phần tử chi tiết có thể chứa các phần tử con được gọi là mục chi tiết. |
Mã lỗi SOAP
Các giá trị faultCode định nghĩa dưới đây phải được sử dụng trong faultcode yếu tố trong khi mô tả lỗi.
Sr.No | Mô tả lỗi |
---|---|
1 | SOAP-ENV:VersionMismatch Đã tìm thấy không gian tên không hợp lệ cho phần tử SOAP Envelope. |
2 | SOAP-ENV:MustUnderstand Phần tử con ngay lập tức của phần tử Header, với thuộc tính mustUnd hieu được đặt thành "1", không được hiểu. |
3 | SOAP-ENV:Client Thông báo được tạo không chính xác hoặc chứa thông tin không chính xác. |
4 | SOAP-ENV:Server Đã xảy ra sự cố với máy chủ nên không thể tiếp tục thông báo. |
Ví dụ về lỗi SOAP
Đoạn mã sau là một lỗi mẫu. Khách hàng đã yêu cầu một phương thức có tên là ValidateCreditCard , nhưng dịch vụ không hỗ trợ phương thức đó. Điều này đại diện cho một lỗi yêu cầu máy khách và máy chủ trả về phản hồi SOAP sau:
<?xml version = '1.0' encoding = 'UTF-8'?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi = "http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd = "http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode xsi:type = "xsd:string">SOAP-ENV:Client</faultcode>
<faultstring xsi:type = "xsd:string">
Failed to locate method (ValidateCreditCard) in class (examplesCreditCard) at
/usr/local/ActivePerl-5.6/lib/site_perl/5.6.0/SOAP/Lite.pm line 1555.
</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>