Vous êtes sur la page 1sur 3

Crear un proxy de servicio Web XML

.NET Framework 1.1 Por definicin, se puede comunicar con los servicios Web XML a travs de una red mediante protocolos estndar, incluido el protocolo SOAP. Esto significa que un cliente y un servicio Web XML se comunican mediante mensajes SOAP, que encapsulan los parmetros in y out como XML. Afortunadamente, para los clientes de servicios Web XML, la clase de proxy controla el trabajo de asignar parmetros a elementos XML y, despus, enviar el mensaje SOAP a travs de la red. Siempre que exista una descripcin de servicio, se puede generar una clase de proxy si la descripcin de servicio es compatible con WSDL (Lenguaje de descripcin de servicios Web). En una descripcin de servicio se define la manera de comunicarse con un servicio Web XML. Con una descripcin de servicio, se puede crear una clase de proxy mediante la herramienta Wsdl.exe. A su vez, un cliente de servicios Web XML puede llamar a mtodos de la clase de proxy que se comunican con un servicio a travs de la red mediante el procesamiento de los mensajes SOAP enviados y recibidos por el servicio Web XML. Como la clase de proxy se comunica con el servicio Web XML a travs de Internet, es una buena idea comprobar que la propiedad Url de la clase de proxy hace referencia a un destino de confianza. De forma predeterminada, la clase de proxy utiliza SOAP sobre HTTP para comunicarse con el servicio Web XML. Sin embargo, Wsdl.exe puede generar clases de proxy para comunicarse con un servicio Web XML mediante el protocolo HTTP-GET o el protocolo HTTP-POST. Para especificar que la clase de proxy debe utilizar HTTP-GET o HTTP-POST, proporcione el modificador /protocol a la herramienta Wsdl.exe, como se describe en la tabla siguiente. Para generar una clase de proxy de servicio Web XML

En el smbolo del sistema, utilice la herramienta Wsdl.exe para crear una clase de proxy en la que se especifique, como mnimo, la direccin URL de un servicio Web XML o de una descripcin de servicio, o la ruta de acceso de una descripcin de servicio guardada.

Wsdl /language:language /protocol:protocol /namespace:myNameSpace /out:filename /username:username /password:password /domain:domain <url or path>
Nota: los argumentos enumerados anteriormente son los que se utilizan habitualmente para la herramienta Wsdl.exe. Para obtener la sintaxis completa de la herramienta Wsdl.exe, vea la herramienta Lenguaje de descripcin de servicios Web (Wsdl.exe).

Parmetro
<url or path>

Valor
Direccin URL o ruta de acceso de una descripcin de servicio (un archivo en el que se describe un servicio Web XML en WSDL). Si especifica un archivo, proporcione uno que contenga la descripcin de servicio. Por ejemplo: mywebservice.wsdl Si especifica una direccin URL, sta debe hacer referencia a una pgina .asmx o devolver una descripcin de servicio. Para los servicios Web XML creados mediante ASP.NET, puede devolver una descripcin de servicio si agrega ?WSDL al final de la direccin URL del servicio Web XML. Por ejemplo, http://www.contoso.com/MyWebService.asmx?WSDL

/language:language

Lenguaje en el que se genera la clase de proxy. Entre las opciones disponibles se incluyen CS, VB y JS, que hacen referencia a C#, Visual Basic .NET y JScript .NET, respectivamente. El lenguaje predeterminado es C#. (Opcional) Protocolo utilizado para la comunicacin con los mtodos de servicio Web XML. Entre las opciones disponibles se incluyen SOAP, HTTP-GET y HTTP-POST. El protocolo predeterminado es SOAP. (Opcional)

/protocol:protocol

/ Espacio de nombres del proxy generado. El valor predeterminado namespace:myNameSpace es el espacio de nombres global. (Opcional) /out:filename Nombre del archivo que se crear con la clase de proxy. El nombre predeterminado se basa en el nombre de la clase que implementa el servicio Web XML. (Opcional) Nombre de usuario que se utilizar al conectar con un servidor Web que requiera autenticacin. (Opcional) Contrasea que se utilizar al conectar con un servidor Web que requiera autenticacin. (Opcional) Dominio que se utilizar al conectar con un servidor Web que requiera autenticacin. (Opcional)

/username:username /password:password /domain:domain

Detalles de la clase de proxy generada


Cuando se utiliza la herramienta Wsdl.exe para generar una clase de proxy, se genera un nico archivo de cdigo fuente en el lenguaje especificado. Este archivo contiene una clase de proxy que expone mtodos sincrnicos y asincrnicos para cada mtodo del servicio Web XML.

Add, la clase de proxy puede llamar al mtodo Add Add, BeginAdd y EndAdd. El mtodo Add de la clase de proxy se utiliza para comunicarse de forma sincrnica con el mtodo de servicio Web XML Add, pero los mtodos BeginAdd y EndAdd se utilizan para comunicarse de forma
Por ejemplo, si un servicio Web XML contiene un mtodo de servicio Web XML denominado con los mtodos siguientes: asincrnica con un mtodo de servicio Web XML. Para obtener ms informacin sobre cmo comunicarse de forma asincrnica con mtodos de servicio Web XML, vea Comunicar con servicios Web XML de forma asincrnica. Cada mtodo de la clase de proxy generada contiene el cdigo correspondiente para comunicarse con el mtodo de servicio Web XML. Si se produce un error durante la comunicacin con el servicio Web XML y la clase de proxy, se iniciar una excepcin. Para obtener ms informacin sobre cmo tratar las excepciones, vea Controlar e iniciar excepciones en servicios Web XML. El orden definido de los parmetros puede ser diferente en el mtodo de servicio Web XML y en el mtodo asociado de la clase de proxy. En la mayora de los casos, el orden de los parmetros coincidir. Sin embargo, si el servicio Web XML espera recibir mensajes SOAP con formato Document, hay un caso en el que el orden de los parmetros no coincidir. Si un mtodo de servicio Web XML tiene definidos parmetros out delante de un parmetro in, los parmetros out se colocan al final de todos los parmetros in en la clase de proxy. En el ejemplo de cdigo siguiente, el mtodo de servicio Web XML in

MyWebMethod tiene declarado el parmetro out outStr antes que el parmetro inStr. Sin embargo, en la clase de proxy, el parmetro inStr se declara antes que outStr.

En algunos casos, la clase de proxy generada por WSDL.exe utiliza un enfoque de nivel ms bajo para convertir los objetos a un tipo especificado en una descripcin de servicio. Como consecuencia, es posible que el tipo generado en la clase de proxy no sea el que desea o espera el programador. Por ejemplo, cuando WSDL.exe encuentra un tipo ArrayList en una descripcin de servicio, crea una matriz de objetos en la clase de proxy generada. Para garantizar que las conversiones de tipo de objeto sean correctas, abra el archivo que contiene la clase de proxy generada y cambie los tipos de objeto incorrectos al tipo de objeto esperado.

VB C# C++ F# JScript

' Declare MyWebMethod in the XML Web service. MyWebMethod(ByRef outStr As String, inStr As String)

' This is the corresponding MyWebMethod in the proxy class. MyWebMethod(inStr As String, ByRef outStr As String) [C#] // Declare MyWebMethod in the XML Web service. MyWebMethod(out string outStr, string inStr) // This is the corresponding MyWebMethod in the proxy class. MyWebMethod(string inStr, out string outStr).
En algunos casos, la clase de proxy generada por WSDL.exe utiliza un enfoque de nivel ms bajo para convertir los objetos a un tipo especificado en una descripcin de servicio. Como consecuencia, es posible que el tipo generado en la clase de proxy no sea el que desea o espera el programador. Por ejemplo, cuando WSDL.exe encuentra un tipoArrayList en una descripcin de servicio, crea una matriz Object en la clase de proxy generada. Para garantizar que las conversiones de tipo de objeto sean correctas, abra el archivo que contiene la clase de proxy generada y cambie los tipos de objeto incorrectos al tipo de objeto esperado.

Advertencias emitidas por Wsdl.exe


Al suministrar varias descripciones de servicio a la herramienta Wsdl.exe, dos de los mensajes de error que se pueden producir son similares a los siguientes:

Advertencia: se omitirn las descripciones de servicio duplicadas con TargetNamespace=<espacio de nombres del esquema> de la ubicacin <URI del esquema>. Indica que el elemento TargetNamespace es idntico en dos o ms de las descripciones de servicio suministradas. Como se supone que TargetNamespace es un identificador nico de un documento XML determinado, que es una descripcin de servicio en este caso, la herramienta Wsdl.exe supone que las dos descripciones de servicio son idnticas. En consecuencia, Wsdl.exe slo crea una clase de proxy para una de las descripciones. Si ste no es el resultado previsto, se puede cambiar. Para las descripciones de servicio que representen servicios Web XML creados mediante ASP.NET, puede aplicar un atributo WebService en el que se especifique una propiedad Namespace nica para la clase que implementa el servicio Web XML. Despus, la propiedad Namespace se utilizar como TargetNamespace, en la descripcin de servicio, para identificar de forma nica el servicio Web XML. Para obtener ms informacin sobre cmo establecer la propiedad Namespace, vea Aplicar un atributo WebService.

Advertencia: se omitirn los esquemas duplicados con TargetNamespace=<espacio de nombres del esquema> de la ubicacin <URI del esquema>. Indica que el elemento TargetNamespace es idntico en dos o ms esquemas XML en las descripciones de servicio suministradas. Como se supone queTargetNamespace es un identificador nico de un documento XML determinado, que es el esquema XML en este caso, Wsdl.exe supone que los dos esquemas XML son idnticos. En consecuencia, Wsdl.exe slo crea una clase para uno de los esquemas. Si ste no es el resultado previsto, el elemento TargetNamespace de cada esquema XML se debe cambiar a un URI nico. La forma exacta de modificar el elemento TargetNamespace depende del origen de los esquemas XML especficos.

Ejemplo:
wsdl.exe mywsdl.wsdl /l:VB /serverInterface