Exporter (0) Imprimer
Développer tout

Comment : contrôler si les paramètres de méthode de service Web sont joints dans un élément supplémentaire

Les paramètres ou la valeur de retour pour une méthode de service Web peuvent être encapsulés automatiquement dans un élément XML parent dans l'élément Body d'un message SOAP ou soit liée directement aux éléments part du message dans un document WSDL (Web Services Description Language). Le .NET Framework se réfère à ces deux choix comme respectivement "encapsulé" et "nu" et les contrôle à l'aide d'attributs.

Pour spécifier que les paramètres sont encapsulés dans un élément XML

  • Appliquez un attribut SoapDocumentMethod à la méthode dans la classe proxy qui appelle la méthode de service Web applicable, en affectant à la propriété ParameterStyle la valeur Wrapped.

    L'exemple de code suivant affecte au ParameterStyle la valeur Wrapped. Il affecte également au style de mise en forme des paramètres la valeur Literal.

    [SoapDocumentMethod("http://www.contoso.com/DocumentWrappedLiteral",
                        RequestNamespace="http://www.contoso.com",
                        ResponseNamespace="http://www.contoso.com", 
                        Use=SoapBindingUse.Literal, 
                        ParameterStyle=SoapParameterStyle.Wrapped)]
    public string DocumentWrappedLiteral(Address1 address, 
                                         bool useZipPlus4) {
    
    

    <SoapDocumentMethod("http://www.contoso.com/DocumentWrappedLiteral", _
                        RequestNamespace:="http://www.contoso.com", _
                        ResponseNamespace:="http://www.contoso.com", _
                        Use:=SoapBindingUse.Literal, _
                        ParameterStyle:=SoapParameterStyle.Wrapped)> _
    Public Function DocumentWrappedLiteral(ByVal address As Address1, _
                                 ByVal useZipPlus4 As Boolean) As String
    

    La partie XML de la demande SOAP encapsule les paramètres dans un élément nommé par défaut d'après la méthode de service Web.

    <?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>
        <DocumentWrappedLiteral xmlns="http://www.contoso.com">
          <MyAddress>
            <Street>string</Street>
            <City>string</City>
            <Zip>string</Zip>
          </MyAddress>
          <useZipPlus4>boolean</useZipPlus4>
        </DocumentWrappedLiteral>
      </soap:Body>
    </soap:Envelope>
    

    La partie XML de la réponse SOAP encapsule les paramètres de out pour la méthode de service Web, y compris le résultat à l'intérieur d'un élément. Le nom de l'élément d'encapsulation par défaut est le nom de la méthode de service Web auquel est ajouté Response.

    <?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>
        <DocumentWrappedLiteralResponse xmlns="http://www.contoso.com">
          <DocumentWrappedLiteralResult>string
          </DocumentWrappedLiteralResult>
        </DocumentWrappedLiteralResponse>
      </soap:Body>
    </soap:Envelope>
    

Pour spécifier que les paramètres suivent directement l'élément Body

  • Appliquez un attribut SoapDocumentMethod à la méthode dans la classe proxy qui appelle la méthode de service Web applicable, en affectant à la propriété ParameterStyle la valeur Bare.

    L'exemple suivant, généré par Wsdl.exe, affecte au ParameterStyle la valeur Bare, tout en affectant au style de mise en forme des paramètres la valeur Literal. L'espace de noms ne pouvant pas être spécifié dans un élément qui encapsule tous les paramètres, l'espace de noms doit être spécifié individuellement pour chaque paramètre et valeur de retour. Vous pouvez le faire en appliquant un XmlElementAttribute à chaque paramètre et à la valeur de retour et en définissant la propriété Namespace.

    [SoapDocumentMethod(
         "http://www.contoso.com/DocumentBareLiteral",
         Use=SoapBindingUse.Literal,
         ParameterStyle=SoapParameterStyle.Bare)]
    [return: XmlElement(Namespace="http://www.contoso.com",
                        IsNullable=true)]
    public string DocumentBareLiteral(
       [XmlElement(Namespace="http://www.contoso.com",
                         IsNullable=true)] 
       Address1 MyAddress, 
       [XmlElement(Namespace="http://www.contoso.com",
                IsNullable=false)] 
       bool useZipPlus4) {
    
    

    <SoapDocumentMethod( _
         http://www.contoso.com/DocumentBareLiteral", _
         Use:=SoapBindingUse.Literal, _
         ParameterStyle:= SoapParameterStyle.Bare)> _
    Public Function DocumentBareLiteral( _
       ByVal <XmlElement([Namespace]:="http://www.contoso.com", _
                          IsNullable:=true)> _
       MyAddress As Address1, _
       ByVal <XmlElement([Namespace]:="http://www.contoso.com", _
                          IsNullable:=false)> _
       useZipPlus4 As Boolean) _
       As <XmlElement([Namespace]:="http://www.contoso.com", _
                      IsNullable:=true)> _
       String
    

    Les éléments XML auxquels les paramètres sont mappés dans la demande SOAP suivent directement l'élément Body, chacun spécifiant un espace de noms.

    <?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>
        <MyAddress xmlns="http://www.contoso.com">
          <Street>string</Street>
          <City>string</City>
          <Zip>string</Zip>
        </MyAddress>
        <useZipPlus4 xmlns="http://www.contoso.com">boolean</useZipPlus4>
      </soap:Body>
    </soap:Envelope>
    

    Les paramètres out, y compris la valeur de retour, sont mappés aux éléments XML qui suivent l'élément Body dans la réponse SOAP. Par défaut, le nom de l'élément de valeur de retour est le nom de la méthode de service Web avec le suffixe Result.

    <?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>
        <DocumentBareLiteralResult xmlns="http://www.contoso.com">
           string</DocumentBareLiteralResult>
      </soap:Body>
    </soap:Envelope>
    

Voir aussi

Footer image



Copyright ©2007 par Microsoft Corporation. Tous droits réservés.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft