Condividi tramite


Procedura: Controllare la formattazione complessiva del corpo dei messaggi SOAP per un metodo del servizio Web

In WSDL (the Web Services Description Language), sono offerte due possibilità per la formattazione o lo stile complessivo del corpo dei messaggi SOAP: RPC e documento. .NET Framework controlla queste opzioni al livello di codice utilizzando gli attributi.

Per specificare uno stile di formattazione del metodo Document

  • Applicare un attributo SoapDocumentMethod al metodo nella classe proxy che esegue la chiamata al metodo del servizio Web applicabile.

    Con lo stile di formattazione creato dai servizi Web mediante il supporto ASP.NET, è possibile utilizzare entrambi i parametri Literal e Encoded degli stili di formattazione. Nell'esempio seguente, viene mostrato lo stile di formattazione del metodo Document unito allo stile di formattazione dei parametri Literal.

    [SoapDocumentMethod("https://www.contoso.com/DocumentWrappedLiteral",
                        RequestNamespace="https://www.contoso.com",
                        ResponseNamespace="https://www.contoso.com",
                        Use=SoapBindingUse.Literal)]
    public string DocumentWrappedLiteral(Address MyAddress, 
                                         bool useZipPlus4) {
    
    <SoapDocumentMethod("https://www.contoso.com/DocumentWrappedLiteral", _
                        RequestNamespace:="https://www.contoso.com", _
                        ResponseNamespace:="https://www.contoso.com", _
                        Use:=SoapBindingUse.Literal)> _
       Public Function DocumentWrappedLiteral(ByVal MyAddress As Address, _
                                 ByVal useZipPlus4 As Boolean)As String
    

    Con lo stile di formattazione di Document, viene definito uno schema XSD all'interno della descrizione del servizio che definisce la richiesta e la risposta SOAP. Gli elementi seguenti provengono dalla descrizione del servizio per la richiesta SOAP del metodo del servizio Web DocumentWrappedLiteral. Poiché il il primo parametro definito per il metodo del servizio Web DocumentWrappedLiteral è una classe ed è specificato lo stile di formattazione del parametro Literal, viene creato uno schema XSD per il tipo address.

    <s:element name="DocumentWrappedLiteral">
      <s:complexType>
        <s:sequence>
           <s:element minOccurs="1" maxOccurs="1" name="MyAddress"
                      nillable="true" type="s0:Address" /> 
           <s:element minOccurs="1" maxOccurs="1" name="useZipPlus4"
                      type="s:boolean" /> 
        </s:sequence>
      </s:complexType>
    </s:element>
    
    <s:complexType name="Address">
       <s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="Street"
                     nillable="true" type="s:string" /> 
          <s:element minOccurs="1" maxOccurs="1" name="City"
                     nillable="true" type="s:string" /> 
          <s:element minOccurs="1" maxOccurs="1" name="Zip" nillable="true"
                     type="s:string" /> 
       </s:sequence>
    </s:complexType>
    

    La parte XML della richiesta SOAP per il metodo del servizio DocumentWrappedLiteral viene creata sulla base dello schema XSD definito nella descrizione del servizio,. Notare che gli elementi XML sottostanti l'elemento Body nella richiesta SOAP corrispondono agli elementi definiti nello schema XSD.

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

Per specificare lo stile di formattazione RPC

  • Applicare un attributo SoapRpcMethod al metodo nella classe proxy che esegue la chiamata al metodo del servizio Web applicabile.

    [SoapRpcMethodAttribute("https://www.contoso.com/Rpc",
                            RequestNamespace="https://www.contoso.com",
                            ResponseNamespace="https://www.contoso.com")]
    public Address Rpc(Address address, bool useZipPlus4) {
    
    <SoapRpcMethodAttribute("https://www.contoso.com/Rpc", _
                            RequestNamespace:="https://www.contoso.com", _
                            ResponseNamespace:="https://www.contoso.com")> _
    Public Function Rpc(ByVal address As Address, _
                        ByVal useZipPlus4 As Boolean) As Address
    

    Uno schema XSD non viene definito rigidamente nella descrizione del servizio per la richiesta o la risposta SOAP al metodo Rpc riportato nell'esempio precedente, ma piuttosto soltanto le parti in cui sono contenute. Pertanto, eseguire la ricerca della richiesta SOAP per il metodo Rpc, considerando che i parametri sono incapsulati all'interno di un elemento e codificati utilizzando la formattazione del parametro Encoded.

    <?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:soapenc="https://schemas.xmlsoap.org/soap/encoding/"
                 xmlns:tns="https://www.contoso.com"
                 xmlns:tnsTypes="https://www.contoso.com/encodedTypes"
                 xmlns:wsdl="https://schemas.xmlsoap.org/wsdl/"
                 xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body soap:encodingStyle="https://schemas.xmlsoap.org/soap/encoding/">
        <tns:Rpc>
          <address href="#1" />
          <useZipPlus4>boolean</useZipPlus4>
        </tns:Rpc>
        <tnsTypes:Address id="1">
          <Street id="2">string</Street>
          <City id="3">string</City>
          <Zip id="4">string</Zip>
        </tnsTypes:Address>
      </soap:Body>
    </soap:Envelope> 
    

Vedere anche

Riferimenti

SoapDocumentMethodAttribute
SoapRpcMethodAttribute

Altre risorse

Personalizzazione della formattazione dei messaggi SOAP

Footer image

Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.