SOAP - Défaut
Si une erreur se produit pendant le traitement, la réponse à un message SOAP est un élément d'erreur SOAP dans le corps du message et l'erreur est renvoyée à l'expéditeur du message SOAP.
Le mécanisme de panne SOAP renvoie des informations spécifiques sur l'erreur, notamment un code prédéfini, une description et l'adresse du processeur SOAP qui a généré l'erreur.
Points à noter
Un message SOAP ne peut porter qu'un seul bloc d'erreur.
L'erreur est une partie facultative d'un message SOAP.
Pour la liaison HTTP, une réponse réussie est liée à la plage de 200 à 299 codes d'état.
SOAP Fault est lié à la plage de 500 à 599 codes d'état.
Sous-éléments de défaut
L'erreur SOAP comprend les sous-éléments suivants -
Sr.Non | Sous-élément et description |
---|---|
1 | <faultCode> C'est un code texte utilisé pour indiquer une classe d'erreurs. Voir le tableau suivant pour une liste des codes d'erreur prédéfinis. |
2 | <faultString> C'est un message texte expliquant l'erreur. |
3 | <faultActor> Il s'agit d'une chaîne de texte indiquant qui a causé l'erreur. Il est utile si le message SOAP traverse plusieurs nœuds dans le chemin du message SOAP et que le client a besoin de savoir quel nœud a provoqué l'erreur. Un nœud qui n'agit pas comme destination ultime doit inclure un élément faultActor . |
4 | <detail> C'est un élément utilisé pour transporter des messages d'erreur spécifiques à l'application. L'élément de détail peut contenir des éléments enfants appelés entrées de détail. |
Codes d'erreur SOAP
Les valeurs faultCode définies ci-dessous doivent être utilisées dans l' élément faultcode lors de la description des défauts.
Sr.Non | Erreur de description |
---|---|
1 | SOAP-ENV:VersionMismatch Un espace de noms non valide a été trouvé pour l'élément Enveloppe SOAP. |
2 | SOAP-ENV:MustUnderstand Un élément enfant immédiat de l'élément Header, avec l'attribut mustUnderstand défini sur "1", n'a pas été compris. |
3 | SOAP-ENV:Client Le message était incorrectement formé ou contenait des informations incorrectes. |
4 | SOAP-ENV:Server Il y a eu un problème avec le serveur, le message n'a donc pas pu continuer. |
Exemple d'erreur SOAP
Le code suivant est un exemple d'erreur. Le client a demandé une méthode nommée ValidateCreditCard , mais le service ne prend pas en charge une telle méthode. Cela représente une erreur de demande client et le serveur renvoie la réponse SOAP suivante -
<?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>