Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este tema es específico de una tecnología heredada. Ahora, los servicios Web XML y los clientes de servicios Web XML deben crearse con Windows Communication Foundation.
Para el estilo o el formato del elemento Body en SOAP global, el lenguaje de descripción de servicios Web (WSDL) proporciona dos opciones: RPC y Document. .NET Framework controla estas opciones en código con los atributos.
Para especificar un estilo de formato Document
Aplique un atributo SoapDocumentMethod o SoapRpcMethod al método en la clase de proxy que llama al método de servicio Web aplicable.
Los servicios Web creados mediante la compatibilidad ASP.NET usan los dos estilos de formato de los parámetros Encoded y Literal. El ejemplo siguiente combina el estilo de formato del método Document con el estilo de formato del parámetro 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 el estilo de formato Document, un esquema XSD se define dentro de la descripción de servicio que define la solicitud y la respuesta SOAP. A continuación se muestra un fragmento de la descripción de servicio de la solicitud SOAP en el método de servicio Web
DocumentWrappedLiteral
. Puesto que el primer parámetro al método de servicio WebDocumentWrappedLiteral
es una clase y se especificó el estilo de formato del parámetro Literal, se crea un esquema XSD para el 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>
Con el esquema XSD definido en la descripción de servicio, sigue la parte XML de la solicitud SOAP al método de servicio
DocumentWrappedLiteral
. Tenga en cuenta que los elementos XML bajo el elemento Body de la solicitud SOAP coinciden con los elementos definidos en el esquema 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>
Para especificar el estilo de formato RPC
Aplique un atributo SoapRpcMethod al método en la clase de proxy que llama al método de servicio Web aplicable.
[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
Un esquema XSD no se define estrictamente en la descripción de servicio para la solicitud o la respuesta SOAP al método
Rpc
del ejemplo anterior, sino simplemente las partes que los comprenden. Por consiguiente, examine la solicitud SOAP de el métodoRpc
, teniendo en cuenta que los parámetros se encapsulan dentro de un elemento y se codifican con el formato de parámetro 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>
Vea también
Referencia
SoapDocumentMethodAttribute
SoapRpcMethodAttribute