sábado, 11 de enero de 2014

Consumiendo servicios Json en clases portables

Para empezar veamos, lo que queremos implementar este el servicio de consumo de nuestra Api Json, como venimos usando Librerias de Clases Portables en nuestro proyecto de Congreso Visible, empezaremos por instalar lo necesario. Abrimos el Package Manager Console


Y cuando se abra la consola ejecutamos el comando "install-package microsoft.net.http –pre". No olviden seleccionar correctamente el proyecto donde se instalará el paquete.


En ese momento estamos listos para empezar. Pues bien consumir un servicio Json a través del GET como los que tenemos en el API de Congreso Visible es bastante sencillo.


Como ven, en realidad el consumo de Json es muy fácil, instanciamos el HttpClient y a través de una petición asincrónica realizamos el consumo de los datos y por ultimo serializamos la respuesta y depositamos el contenido en una clase que contiene la estructura del Json que consumimos y que habiamos creado previamente.

Debemos recordar que los servicios tienen que tener la interfaz correcta, sin embargo quiero que observen algo en ella.


Esta interfaz es la misma que en post pasados implementamos a cada una de las interfaces de las Vistas Modelo. Si se preguntan por qué la respuesta es simple, no es correcto que la url del API este quemada en nuestro código por lo tanto tenemos que usar Settings Service para recuperar el dato de la configuración.


Y para completar la implementación, así como tenemos un BindableBase para las Vista Modelo, tendremos un ServiceBase en Infraestructura para soportar el GetService y poder recuperar del contexto nuestro servicio de Settings, así:

Recuerden que para que el llamado a los settings funcione, deben inicializar el servicio en el Locator, al que por cierto renombré.


Ahora bien, después de que nos llega el resultado a la Vista Modelo, necesitamos transformar el Modelo a una VistaModelo en el comando


De esta manera nuestro codigo queda más limpio. El ViewModelHelper lo ubiqué en el proyecto de Vistas Modelo y su implementación para el ejemplo es la siguiente:


Tengan en cuenta que lo que efectivamente hace el Binding es la ultima línea, debido que al asignar la variable Parties en el contexto se ejecutará el INotifyPropertyChanged, diciendo a la vista que hay datos disponibles.

Este ejemplo se finaliza el consumo de datos y ya pueden verlo en el código que se encuentra publicado, si se preguntan como se inicializa la carga en el inicio de la aplicación decidi hacerlo de la siguiente forma:


Esto permite que el inicio de la aplicación sea fluido y que la carga de datos solo inicie cuando la carga de la página haya finalizado y así se ven los partidos cargados :)

2 comentarios:

Unknown dijo...

Hola con las apps Universal cual seria el caso para consumir servicios de JSON.

Sorey García dijo...

Hola, Yolger

Puedes hacer exactamente lo mismo, las apps universales tienen cambios arquitectónicos de la plataforma y en forma de construccion, pero con respecto al uso de HttpClient para consumir servicios JSON no hay ningun cambio o noverdad en especial que resaltar.