SOAP - Hata
İşleme sırasında bir hata oluşursa, bir SOAP mesajına verilen yanıt, mesajın gövdesindeki bir SOAP hatası öğesidir ve hata, SOAP mesajının göndericisine geri gönderilir.
SOAP hata mekanizması, önceden tanımlanmış bir kod, bir açıklama ve hatayı oluşturan SOAP işlemcisinin adresi dahil olmak üzere hata hakkında belirli bilgiler döndürür.
Dikkat Edilmesi Gereken Noktalar
Bir SOAP mesajı yalnızca bir hata bloğu taşıyabilir.
Hata, SOAP mesajının isteğe bağlı bir parçasıdır.
HTTP bağlama için, başarılı bir yanıt 200 ila 299 durum kodları aralığına bağlanır.
SOAP Fault, 500 ila 599 durum kodları aralığına bağlıdır.
Arızanın Alt Unsurları
SABUN Arızası aşağıdaki alt unsurlara sahiptir -
Sr.No | Alt öğe ve Açıklama |
---|---|
1 | <faultCode> Bir hata sınıfını belirtmek için kullanılan bir metin kodudur. Önceden tanımlanmış arıza kodlarının bir listesi için sonraki Tabloya bakın. |
2 | <faultString> Hatayı açıklayan bir metin mesajıdır. |
3 | <faultActor> Hataya kimin neden olduğunu gösteren bir metin dizesidir. SOAP mesajının SOAP mesaj yolundaki birkaç düğümden geçmesi ve istemcinin hangi düğümün hataya neden olduğunu bilmesi yararlıdır. Nihai hedef olarak hareket etmeyen bir düğüm, bir errorActor öğesi içermelidir . |
4 | <detail> Uygulamaya özel hata mesajlarını taşımak için kullanılan bir unsurdur. Ayrıntı öğesi, ayrıntı girdileri adı verilen alt öğeler içerebilir. |
SABUN Hata Kodları
Aşağıda tanımlanan FaultCode değerleri, hataları tanımlarken hata kodu elemanında kullanılmalıdır .
Sr.No | Hata tanımlaması |
---|---|
1 | SOAP-ENV:VersionMismatch SOAP Envelope öğesi için geçersiz bir ad alanı bulundu. |
2 | SOAP-ENV:MustUnderstand MustUnderstand özniteliği "1" olarak ayarlanmış Header öğesinin hemen alt öğesi anlaşılmadı. |
3 | SOAP-ENV:Client Mesaj yanlış oluşturulmuş veya yanlış bilgi içeriyordu. |
4 | SOAP-ENV:Server Sunucuyla ilgili bir sorun olduğu için mesaj devam edemedi. |
SABUN Hata Örneği
Aşağıdaki kod, örnek bir Hatadır. İstemci, ValidateCreditCard adlı bir yöntem talep etti , ancak hizmet böyle bir yöntemi desteklemiyor. Bu bir istemci isteği hatasını temsil eder ve sunucu aşağıdaki SOAP yanıtını döndürür -
<?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>