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 WebDocumentWrappedLiteral
è una classe ed è specificato lo stile di formattazione del parametro Literal, viene creato uno schema XSD per il tipoaddress
.<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 metodoRpc
, 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
Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.