Comment : personnaliser des messages SOAP avec la sérialisation XML

Cette rubrique est spécifique à une technologie existante. Les services Web XML et les clients du service Web XML doivent à présent être créés à l'aide de Windows Communication Foundation.

L'espace de noms System.Web.Serialization fournit de nombreux attributs pour contrôler la sérialisation XML qui peut s'appliquer aux paramètres et valeurs de retour de méthodes de service Web. Cette rubrique indique comment utiliser l'attribut XmlElementAttribute.

Pour spécifier le nom de l'élément XML représentant un paramètre

  1. Appliquez au paramètre un attribut XmlElement qui spécifie le nom souhaité pour l'élément et, éventuellement, un espace de noms si la mise en forme de paramètre a la valeur Literal. Si la mise en forme de paramètre a la valeur Encoded, appliquez un attribut SoapElement au paramètre.

    L'exemple de code suivant attend comme nom d'élément représentant les paramètres MyAddressElement, MyZipElementet ReturnValueElement. Il attend également comme nom d'élément représentant la valeur de retour ReturnValueElement. La méthode de service Web qui met en forme dans l'exemple est Document, c'est-à-dire la valeur par défaut pour ASP.NET.

    <%@ WebService Language="C#" Class="SoapDocumentServiceSample" %>
     using System.Web.Services;
     using System.Web.Services.Protocols;
     using System.Xml.Serialization;
    
    [WebService(Namespace="https://www.contoso.com")] 
    public class SoapDocumentServiceSample  
    {
      [ WebMethod ]
      [ return: XmlElement("ReturnValueElement",IsNullable=false)]
      public Address ValidateAddress(
        [XmlElement("MyAddressElement")] Address MyAddress,
        [XmlElement("MyZipElement")] bool useZipPlus4) 
      {
        useZipPlus4 = true;    
        return new Address();
      }
    }
    
    <%@ WebService Language="VB" Class="SoapDocumentServiceSample" %>
     Imports System.Web.Services
     Imports System.Web.Services.Protocols
     Imports System.Xml.Serialization
    
    <WebService(Namespace := "https://www.contoso.com")> _
    Public Class SoapDocumentServiceSample
      < WebMethod > _
      Public Function ValidateAddress( _
           <XmlElement("MyAddressElement")> MyAddress As Address, _
           <XmlElement("MyZipElement")> useZipPlus4 As Boolean)  
           As <XmlElement("ReturnValueElement",IsNullable :=false)> _
           Address 
            useZipPlus4 = True 
         Return new Address()
      End Function
    End Class
    

    Le service Web attend la demande SOAP suivante. Remarquez le nom des éléments correspondent à ce qui est spécifié dans l'attribut XmlElement, par opposition aux noms du paramètre.

    <?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="https://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <ValidateAddress xmlns="http://tempuri.org/">
          <MyAddressElement>
            <Street>string</Street>
            <City>string</City>
            <Zip>string</Zip>
          </MyAddressElement>
          <MyZipElement>boolean</MyZipElement>
        </ValidateAddress>
      </soap:Body>
    </soap:Envelope>
    

Voir aussi

Référence

System.Xml.Serialization Namespace
SoapDocumentMethodAttribute
SoapRpcMethodAttribute
SoapDocumentServiceAttribute
SoapRpcServiceAttribute

Concepts

Modification de messages SOAP à l'aide d'extensions SOAP
Création de clients de service Web XML

Autres ressources

Personnalisation de la mise en forme de messages SOAP
Introducing XML Serialization
Services Web XML utilisant ASP.NET