Enviar solicitudes SOAP mediante el cliente de Visual Studio 2005 (Visual Basic)
Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.
El ejemplo de este tema es similar al que se incluye en Enviar solicitudes SOAP mediante el cliente Visual Studio 2005 (C#). La única diferencia es que el ejemplo está escrito en Visual Basic. Por lo tanto, en este tema solamente se indican el código y los pasos necesarios para crear el ejemplo.
Crear un ejemplo funcional
Debido al elevado número de pasos necesarios para crear este ejemplo, la aplicación se divide en cuatro partes:
Parte 1: ejecutar el procedimiento almacenado.
Parte 2: ejecutar la consulta SQL sin parámetros.
Parte 3: ejecutar la consulta SQL con parámetros.
Parte 4: ejecutar la función definida por el usuario.
Cada parte proporciona un conjunto de instrucciones. Puede probar la aplicación al final de cada parte.
Para crear la clase de proxy necesaria
Cree una carpeta en el equipo para esta aplicación.
En el equipo cliente, inicie Microsoft Visual Studio 2005 desde el grupo de programas Microsoft Visual Studio 2005.
Haga clic en Nuevo proyecto.
Seleccione Proyectos de Visual Basic como Tipo de proyecto.
En el cuadro de texto Nombre, especifique NativeSOAPApp2.
En el cuadro de texto Ubicación, especifique la ruta de acceso a la carpeta en la que desee guardar el proyecto.
Seleccione Aplicación para Windows como plantilla y haga clic en Aceptar.
En la ventana Explorador de soluciones, haga clic con el botón secundario en Referencias y seleccione Agregar referencia Web. Otro modo de agregar una referencia Web es seleccionar Agregar referencia Web en el menú Proyecto.
En el cuadro Dirección, escriba http://Servidor/sql?wsdl, donde Servidor es el nombre del servidor y presione ENTRAR. Si la generación del WSDL se realiza correctamente, aparecerá la descripción del extremo. En dicho punto, haga clic en Agregar referencia. De este modo se crean las clases de proxy necesarias para que pueda llamar a los métodos del documento WSDL.
Parte 1: ejecutar el procedimiento almacenado
En esta parte, la aplicación solicita el método Web GetCustomerInfo.
En Form1, agregue un cuadro de texto (textBox1), un botón (button1) y un cuadro de lista (listBox1).
Haga clic con el botón secundario en el cuadro de texto y seleccione Propiedades. Cambie el valor Text de textBox1 a 1. Es el valor predeterminado del Id. del cliente.
Haga clic con el botón secundario en button1 y seleccione Propiedades.
Cambie el valor de la propiedad Text de button1 a ExecSP.
Cambie el valor de la propiedad name a ExecSP.
Haga clic con el botón secundario en el cuadro de lista (listBox1) y seleccione Propiedades. Cambie el valor de la propiedad HorizontalScrollbar a True.
Haga doble clic en ExecSP.
Copie el código de Lista de códigos de Visual Basic para ExecSP en esta función.
Actualice el código. Cambie las referencias a server por el nombre del host identificado al crear el extremo mediante CREATE ENDPOINT.
Guarde y compile el proyecto. Para obtener más información, vea la sección anterior "Compilar el código".
Parte 2: ejecutar la consulta SQL sin parámetros
En esta parte, la aplicación cliente ejecuta una consulta ad hoc (consulta FOR XML) que obtiene tres empleados de la tabla Employee de la base de datos AdventureWorks.
En Form1, agregue otro botón (button1) en la ficha [Diseño].
Haga clic con el botón secundario en este nuevo botón y seleccione Propiedades.
Cambie el valor de la propiedad Text de button1 a ExecBatchFindAllEmps.
Cambie el valor de la propiedad (name) a ExecBatchFindAllEmps.
Haga doble clic en ExecBatchFindAllEmp.
Copie el código de Lista de códigos de Visual Basic para FindAllEmps en esta función.
Actualice el código. Cambie las referencias a server por el nombre del host identificado al crear el extremo mediante CREATE ENDPOINT.
Guarde y compile el proyecto. Para obtener más información, vea la sección anterior "Compilar el código".
Parte 3: ejecutar la consulta SQL con parámetros
Esta parte es similar a la anterior, con la diferencia de que la solicitud SOAP para la consulta ad hoc incluye un parámetro de consulta. La consulta FOR XML obtiene información de los empleados para el Id. de empleado especificado.
En Form1, agregue un botón (button1) en la ficha [Diseño].
Haga clic con el botón secundario en este nuevo botón y seleccione Propiedades.
Cambie el valor de la propiedad Text de button1 a ExecBatchFindAnEmp.
Cambie el valor de la propiedad (name) a ExecBatchFindAnEmp.
Haga doble clic en ExecBatchFindAnEmp.
Copie el código de Lista de códigos de Visual Basic para FindAnEmp en esta función.
Actualice el código. Cambie las referencias a server por el nombre del host identificado al crear el extremo mediante CREATE ENDPOINT.
Guarde y compile el proyecto. Para obtener más información, vea la sección anterior "Compilar el código".
Parte 4: ejecutar la función definida por el usuario
En esta parte, la aplicación cliente envía una solicitud SOAP para el método Web UDFReturningScalar. Este método Web corresponde a la función definida por el usuario que devuelve un valor entero.
En Form1, agregue otro botón (button1) en la ficha [Diseño].
Haga clic con el botón secundario en este nuevo botón y seleccione Propiedades.
Cambie el valor de la propiedad Text de button1 a ExecUDFReturningScalar y
Cambie el valor de la propiedad (name) a ExecUDFReturningScalar.
Haga doble clic en ExecUDFReturningScalar.
Copie el código de Lista de códigos de Visual Basic para ExecUDF en esta función.
Actualice el código. Cambie las referencias a "server" por el nombre del host identificado al crear el extremo mediante CREATE ENDPOINT.
Guarde y compile el proyecto. Para obtener más información, vea la sección anterior "Compilar el código".
Puesto que el extremo especifica la autenticación integrada, aparecerá la siguiente línea en el código:proxy.Credentials = System.Net.CredentialCache.DefaultCredentials.
Si utiliza la autenticación de SQL Server, es recomendable eliminar esta línea y sustituirla por el código que implementa encabezados de seguridad de Windows en las credenciales de autenticación basadas en SQL Server. Para obtener más información, vea Autenticación de SQL Server por medio de SOAP.
[!NOTA]
Si utiliza la autenticación de SQL Server o la autenticación básica, SQL Server requiere que se utilice SSL (Capa de sockets seguros) para la transmisión cifrada segura de las credenciales del usuario que, de otro modo, serían visibles como texto no cifrado. Para obtener más información acerca de cómo habilitar SSL para su uso con extremos HTTP, vea Configurar certificados para su uso con SSL.
Compilar el código
SQL Server instala .NET Framework 2.0 como parte de su proceso de instalación. Las instrucciones de compilación utilizan el último .NET Framework (es el número más elevado de la carpeta \WINDOWS\Microsoft.NET\Framework).
Para compilar el código
- Guarde todo el proyecto.
Abra una ventana del símbolo del sistema y vaya hasta la carpeta en la que haya guardado el proyecto.
Desde esta carpeta, copie el archivo Reference.vb de la subcarpeta Web Reference\Server (por ejemplo, copie "Web Reference\Server\Reference.vb"). Los archivos Form1.vb y Reference.vb deberían estar ubicados en la misma carpeta.
Compile el código y especifique el nombre del archivo ejecutable (.exe). Por ejemplo, si el nombre del ejecutable es NativeSOAPApp2.exe, en la línea de comandos debería aparecer lo siguiente:
\WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx\vbc.exe /out:NativeSOAPApp2.exe /r:System.dll /r:System.Data.dll /r:System.Xml.dll /r:System.Web.Services.dll /r:Microsoft.VisualBasic.dll /r:System.Drawing.dll /r:System.Windows.Forms.dll /m:Form1 Form1.vb Reference.vb
xxxxx es el número de carpeta correspondiente a la versión de .NET Framework.
De este modo se crea el ejecutable (NativeSOAPApp2.exe) en el directorio actual.
[!NOTA]
Si utiliza una versión anterior de .NET Framework, es posible que reciba un error de tiempo de ejecución. Si sucede, intente solucionarlo actualizando el procedimiento almacenado GetCustomerInfo; para hacerlo, agregue la cláusula FOR XML AUTO al final de la instrucción SELECT como se indica a continuación:
SELECT TOP 3 SalesOrderID, OrderDate FROM SalesOrderHeader WHERE CustomerID = @CustomerID FOR XML AUTO
Los resultados obtenidos al ejecutar el procedimiento almacenado se muestran en el cuadro de lista.
Vea también