Xamarin

Xamarin.Forms – Clase genérica para consumir servicios REST


Tal vez has visto en internet, videos y tutoriales para consumir un servicio web tipo REST, utilizando el paquete de NuGet Microsoft.Net.Http, en conjunto con Json.Net. Nosotros, ya en una entrada anterior hemos visto cómo llevar a cabo el consumo de un servicio de este tipo desde Xamarin.Forms. El motivo de esta entrada es para mostrar cómo crear una clase genérica, con la que puedas consumir cualquier servicio tipo REST.

Refactorizando el método:

1.- En primer lugar, nos basaremos en el código visto en una entrada anterior, el cual es:

2.- Aislaremos el método en una clase independiente llamada “HttpHelper”

3.- Cambiamos el nombre del método “GetWeatherAsync” por “GetRestServiceDataAsync”

4.- Eliminamos la llamada al método “SetValue(weather)”

5.- En este punto, seguramente tendremos un problema diciendo que el tipo “WeatherResult” no existe, por lo que podremos preguntarnos, ¿Qué podemos hacer? Básicamente, debemos hacer que cuando la clase sea creada, podamos pasarle el tipo de dato que se utilizará como tipo genérico en la clase, en este caso, será la definición de nuestro modelo de datos extraído del archivo json obtenido de nuestro servicio web, tal como lo hemos hecho anteriormente. Para resolver esto, añadiremos la sintaxis “<T>” al final de la definición de la clase:

6.- Sustituimos la palabra “WeatherResult” por una T, para que se lleve a cabo la deserialización del tipo T, que podrá ser cualquier clase que definamos, y no de una clase específica.

7.- Finalmente, después de algunos pequeños cambios, nuestra clase queda de la siguiente forma:

¡Probemos nuestra clase!

1.- Buscamos un servicio rest, en mi caso, será un servicio que te permite ingresar una dirección IP, y ubicar el país donde se encuentra.

2.- Copiemos el contenido en formato JSON:

3.- Lo pegamos en VS, con la opción Paste JSON as classes

4.- Creamos una página sencilla:

5.- Escribimos el código para ejecutar el proceso:

6.- Si todo ha salido bien, debemos ver algo como lo siguiente:

Servicio Web consumido

Servicio Web consumido

Saludos.

Xamarin
Agregando Intellisense a los archivos .axml para trabajar con Xamarin.Android en VS 2015
Xamarin Forms
Xamarin Forms: Consumiendo un servicio web basado en JSON Parte 2: Creando el ViewModel
Xamarin Forms
Xamarin Forms: Consumiendo un servicio web basado en JSON Parte 1: Creando el Modelo
There are currently no comments.