Consumir un Web Service desde Windows.Form con C# y VB[Consumir un WebMethod: Random]Fecha: 20/Feb/2005 (17/Feb/2005)
|
Introduccion
Saludos a todos desde Perú, como es mi estilo este ejemplo es sencillo y práctico para todos aquellos que quieran iniciarse en el llamado de Web Service, para correr el ejemplo es necesareo el .Net Framework (el VS lo instala automáticamente) y tener salida a Internet, para poder consumir el Web Service. Explicaremos como usar una referencia Web, y como usarla en nuestra aplicación, en este caso en una aplicacion de escritorio, WindowsForm, con C# y VB.
Manos a la Obra
1. Bueno lo primero y que primero que debemos hacer es crear nuestro proyecto en VS.Studio, crearemos una aplicación Windows.Form con C# y VB, yo use estos lenguajes pero ustedes pueden hacerlo con J#, son los mismo pasos.
2. Agregamos los controles mostrados en la siguiente imagen, 3 cajas de texto: txtMin, txtMax, txtCount, un botón cmdRnd, y una lista lstNums.
La funcion que vamos a consumir requiere tres parametros el numero minmo, el maximo, y la cantidad de numero que deseamos. Este WebMethod, retorna un arreglo de enteros. Nosotros solo vamos a consumir un metodo del servicio Web, es como si llamaramos a una funcion de algun otro proyecto, pero con la diferencia que esta funcion esta en un webService. Para poder usar los metodos de un WebService debemos agregar una referencia en el explorador de souciones (para C# y VB es lo mismo).
3. Agregar una Referencia Web a la url del Web Service
En ventana que aparecela url colocamos lo siguiente: http://www.golemproject.com/Apps/96/Generator.asmx, que es la direccion del Web Service que vamos a consumir, pueden probarlo directamente desde su navegador. Damos click en el boton agregar referencia (no olvides ponerle nombre a la referencia yo use RandomNumber):
Listo ya tenemos nuestra referencia a nuestro proyecto ahor podemos consumir todos los servicios de este Web Service.
Agregando el código a nuestor Windows.Form.
Primero debemos importar el NameSpace, para poder referenciarlos mas rápido en la codificación, esto se hace en nuestro Formulario:
[C#]
using rnd = CallWebService.RandomNumber;[VB]
Imports Rnd = vbCallWebService.RandomNumberBueno ahora se creara una variable publica, un arreglo, y un función publica que llenara el listBox con los elementos del arreglo. Algunos a esta función que no retorna ningún tipo de datos suelen llamarloe procedimientos pero ese es otro tema.
[C#]
//variables globales public int[] numbers; //funcion para llenar el listBox public void LlenarListBox() { //limpiando la lista lstNums.Items.Clear(); //llenando el ListBox for ( int i=0 ; i< numbers.Length; i++){ lstNums.Items.Add(numbers[i]); } }[VB]
'//variables globales Public numbers As Integer() '//funcion para llenar el listBox Public Sub LlenarListBox() 'limpiando el ListBox lstNums.Items.Clear() '//llenando el ListBox For i As Integer = 0 To numbers.Length - 1 lstNums.Items.Add(numbers(i)) Next End SubNota: Solo se declara el arreglo, no es necesario darle el tamaño, este se le dará en tiempo de ejecución.
Consumiendo el Web Service: ahora toca lo importante y fundamental, consumir un servicio del Web Service que hemos hecho referencia. Primero recuperamos las variables ingresadas por el usuario, usamos el try, para validar que se ingresen datos correctos. Luego le damos tamaño al arreglo con el valor ingresado. Ahora para poder consumir un servicio, instanciamos un objeto, del webService, y posteriormente llamamos a un metodo de este webService, con el cual llenamos el arreglo, en otras palabras en código sería asi:
[C#]
private void cmdRnd_Click(object sender, System.EventArgs e) { //varaibles de uso int num, min, max; //metiendole una excepcion por siaca //haya error try { num = Convert.ToInt16(txtCount.Text); min = Convert.ToInt16(txtMin.Text); max = Convert.ToInt16(txtMax.Text); //reservando el tamaño del arreglo numbers = new int[num]; //Declarando el WEbSErvice rnd.Generator wsRnd = new rnd.Generator(); //CONSUMIENDO EL WEB SERVICE numbers = wsRnd.GenerateRandomDotOrg(min,max,numbers.Length); } catch (Exception ex) { MessageBox.Show("ocurrio un error: " + ex.Message.ToString()); } //ahora llamar a la funcion que llena el listBox this.LlenarListBox(); }[VB]
Private Sub cmdRnd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRnd.Click '//varaibles de uso Dim num, min, max As Integer '//metiendole una excepcion por siaca '//haya error Try num = Convert.ToInt16(txtCount.Text) min = Convert.ToInt16(txtMin.Text) max = Convert.ToInt16(txtMax.Text) '//reservando el tamaño del arreglo ReDim numbers(num) '//Declarando el WEbSErvice Dim wsRnd As New Rnd.Generator '//CONSUMIENDO EL WEB SERVICE numbers = wsRnd.GenerateRandomDotOrg(min, max, num) Catch ex As Exception MessageBox.Show("ocurrio un error: " + ex.Message.ToString()) End Try '//ahora llamar a la funcion que llena el listBox Me.LlenarListBox() End Sub
Conclusión
SComo vieron consumir un WebService no es díficil, solo hay que conocer los pasos y listo, un Servicio web también se puede consumir des una aplicación consola, desde una aplicación Web, desde una aplicación móvil, y desde cualquier dispositivo que tenga salida a internet, eso queda como tema de investigación. Yo use un Web Service de la Red, aca mismo puede encontrar artículos de como crear un Web Service en caso de que quieran probarlo con su propio web Service. No olviden calificar el artículo, y si tienen algun comentario solo me lo hacen saber.
Espacios de nombres usados en el código de este artículo:
System.Windows.Form, esa principalmente y la externa que es el webService
Fichero con el código de ejemplo: sergio_CallWebService.zip - Tamaño 48 KB