Maison > Article > développement back-end > SAVON C#
SOAP (Simple Access Object Protocol) est un protocole basé sur XML et permet aux applications écrites dans différents langages et exécutées sur différentes plates-formes d'interagir les unes avec les autres. Cela fonctionne via HTTP. SOAP est un protocole léger car basé sur XML, qui est un langage léger. C# SOAP est indépendant de la plateforme et du système d'exploitation sur lesquels il travaille, ce qui facilite l'échange de données entre différentes applications fonctionnant sur différentes plateformes. Il s'agit d'un protocole faiblement couplé car il ne nécessite pas que les applications communicantes soient dans la même langue.
Syntaxe
La syntaxe pour définir un message SOAP est la suivante :
<SOAP : Envelope xmlns : SOAP = "https://www.educba.com/"> <SOAP : Header> </SOAP : Header> <SOAP : Body> <SOAP : Fault> </SOAP : Fault> </SOAP : Body> </SOAP : Envelope>
Les règles de syntaxe pour définir un message SOAP sont les suivantes :
L'encodage d'un message SOAP doit être effectué en utilisant le langage XML. Il doit utiliser l’espace de noms SOAP Envelope. Il ne doit pas être constitué de références DTD et d'instructions de traitement XML.
SOAP fonctionne sur les mécanismes de Marshalling et Demarshalling. Il utilise le protocole HTTP pour envoyer des messages XML appelés messages SOAP au serveur pour traitement. Ces messages SOAP contiennent des informations à traiter. Nous pouvons appeler cela une requête HTTP, et cette méthode d'encapsulation des informations dans un message SOAP s'appelle Marshalling.
Maintenant, le serveur prend la requête du client et déballe le message SOAP envoyé par le client. Le serveur traite ensuite la demande et envoie la réponse appropriée au client sous la forme d'un message SOAP. Cette méthode de déballage des informations s'appelle Demarshalling.
Un message Soap se compose des éléments suivants :
1. Élément d'enveloppe SOAP : Cet élément est l'élément racine du message SOAP. Il indique que le document XML spécifique est un message SOAP. Il contient les détails du message SOAP. Élément d'en-tête : l'élément d'en-tête SOAP est un élément facultatif du message SOAP. Mais si le message SOAP contient cet élément, alors il doit être le premier élément enfant de l'élément racine Envelope, et les éléments enfants de Header doivent être qualifiés d'espace de noms. Cet élément contient des informations telles que des informations de paiement, des informations d'authentification, etc. Élément SOAP Body : cet élément contient les informations réelles à échanger entre les deux points de terminaison. Il contient des informations sur les demandes et les réponses.
Veuillez trouver ci-dessous un exemple d'élément SOAP Body issu d'un message de réponse SOAP contenant les détails de l'employé :
Code :
<soap : Body> <GetEmployeeDetails> <EmployeeName>John Duffel</EmployeeName> <EmployeeCode>EI66</EmployeeCode> </GetEmployeeDetails> </soap: Body>
2. Élément SOAP Fault : Lorsqu'un message SOAP est envoyé au serveur, la réponse renvoyée par le serveur peut contenir soit les informations requises dans la demande sur le traitement réussi de la demande, soit elle peut contenir un message d'erreur. Ainsi, cet élément contient des informations relatives aux erreurs. Si un message SOAP contient cet élément, alors il doit s'agir d'un élément enfant de l'élément Body.
Les sous-éléments de l'élément Fault sont les suivants :
Veuillez trouver ci-dessous un schéma montrant la structure du message SOAP :
Les éléments avec le fond coloré sont des éléments facultatifs d'un message SOAP.
Voyons les étapes nécessaires pour créer un service Web SOAP en C#. Les étapes sont les suivantes :
Dans ce fichier de service, vous pouvez ajouter votre code pour le service et l'exécuter comme indiqué dans l'exemple sous la section Exemple.
Ci-dessous les exemples mentionnés :
Code :
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; namespace WebApplication4 { [WebService(Name ="Sample Web Service")] public class WebService1 : System.Web.Services.WebService { [WebMethod] public string Message() { return "Learning SOAP web service"; } } }
Sortie :
Après avoir cliqué sur « Message » (méthode Web), nous obtiendrons le résultat suivant :
The SOAP request and response in the above snapshot are as follows:
Code:
POST /WebService1.asmx HTTP/1.1 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://tempuri.org/Message" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Message xmlns="http://tempuri.org/" /> </soap:Body> </soap:Envelope>
In the above message, the first element is the Envelope element. Then this message contains the Body element, which provides details of the SOAP message.
Code:
HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <MessageResponse xmlns="http://tempuri.org/"> <MessageResult>string</MessageResult> </MessageResponse> </soap:Body> </soap:Envelope>
The first line of this message contains code ‘200’, which indicates a successful response from the server. This message contains an Envelope element and then a Body element containing details of the response from the server. We can see a tag ‘MessageResult’ with a value string, indicating that our Web Method (Message) result will be of a type string.
After clicking on the ‘Invoke’ button in the second snapshot, we will get the final result as shown below:
Output:
SOAP i.e. Simple Object Access Protocol, is a lightweight and loosely coupled protocol that can exchange data between applications written in different programming languages and working on different platforms. It exchanges data in the form of SOAP messages in XML language and works over HTTP protocol.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!