Blog
Android, ¿Como consumir un Servicio Web?
- diciembre 13th, 2010
- News
- 0 Comments
En el desarrollo para móvil es muy común requerir datos e interactuar con servicios. Como desarrolladores móvil seguramente habrán requisitos o necesidades en donde tengamos que obtener un listado de comercios alojado en un servicio web de nuestro departamento, o bien acceder a un listado de solicitudes que se actualiza periódicamente que brinda la oficina de solicitudes de una entidad guvernamental, o bien sólo simples servicios como el del tiempo, cotizaciones, finanzas, etc.
Si bien sabemos que podemos hacerlo de diferentes formas en Android, como mediante REST, en este caso particular lo haremos mediante SOAP y el servicio estará construido en Dotnet.
Con esto agregamos contenido extra y no sólo construiremos una solución Android sinó que mostramos la interoperabilidad que podemos lograr utilizando Android.
¿Lindo desafío no?
http://code.google.com/p/ksoap2-android/
De esta forma gran parte de la complejidad del desarrollo descansa en este componente. Luego generaremos una aplicación Android y un servicio Web Dotnet.
Code 1 - Código del Servicio Web en C#
Como podemos observar en el Code 1, el servicio web sólo posee un método de nombre “SaludoAndroid” y que su operación es devolver una cadena “Servicio de Nicolás!”
En primer lugar deberemos descargarnos la librería ksoap2 for android y luego referenciarla en nuestro proyecto android.
Para el ‘layout’ de la aplicación no invertiremos tiempo ya que solo utilizaremos un textview para mostrar contenido de texto extraído del servicio Web.
En el manifiesto de la aplicación debemos tener en cuenta el agregar permisos al acceso a Internet como muestra la Fig. 5.
Finalmente realizaremos la codificación de la actividad que acceda al servicio web de la tecnología Dotnet y pueda mostrar los resultados en Android.
La clase “GetServicio” posee algunas variables necesarias para interactuar con la librería ksoap2:
Code 2 - Declaración de variables en la clase GetServicio
Luego todo el desarrollo se encuentra en el ‘onCreate’:
Code 3 - Evento Oncreate
Veamos el servicio web funcionando solo:
Veamos la solución Android funcionando en el emulador consumiendo el servicio web:
Finalmente, veamos como se construye paso a paso en el siguiente Vídeo:
Nicolas Bortolotti, Ingeniero U.T.N. Regional San Francisco - Comunidad Xcloud
Con esto agregamos contenido extra y no sólo construiremos una solución Android sinó que mostramos la interoperabilidad que podemos lograr utilizando Android.
¿Lindo desafío no?
Introducción
En primer lugar, para interactuar con SOAP utilizaremos una librería llamada ksoap2 for android.http://code.google.com/p/ksoap2-android/
De esta forma gran parte de la complejidad del desarrollo descansa en este componente. Luego generaremos una aplicación Android y un servicio Web Dotnet.
Servicio Web Dotnet
El servicio desarrollado en dotnet, es un web service tradicional sobre el framework 2.0 sin hacer uso de WCF.Fig.1 - Servicio Web - Dotnet C# - framework 2.0
[WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class Service : System.Web.Services.WebService { public Service () { } [WebMethod] public string SaludoAndroid() { return "Servicio de Nicolás!"; } } |
Code 1 - Código del Servicio Web en C#
Como podemos observar en el Code 1, el servicio web sólo posee un método de nombre “SaludoAndroid” y que su operación es devolver una cadena “Servicio de Nicolás!”
Aplicación Android
Vamos a generar una aplicación Android para la versión 2.2.Fig.2 - Proyecto Android General para la solución de llamada a un web Service
En primer lugar deberemos descargarnos la librería ksoap2 for android y luego referenciarla en nuestro proyecto android.
Fig.3 - Sitio de desacarga de ksoap2-android
Para el ‘layout’ de la aplicación no invertiremos tiempo ya que solo utilizaremos un textview para mostrar contenido de texto extraído del servicio Web.
Fig. 4 - Layout de la solución Android
En el manifiesto de la aplicación debemos tener en cuenta el agregar permisos al acceso a Internet como muestra la Fig. 5.
Fig. 5 - Manifiesto de la solución Android desarrollada
Finalmente realizaremos la codificación de la actividad que acceda al servicio web de la tecnología Dotnet y pueda mostrar los resultados en Android.
La clase “GetServicio” posee algunas variables necesarias para interactuar con la librería ksoap2:
private static final String accionSoap = "http://tempuri.org/HelloWorld"; private static final String Metodo = "HelloWorld"; private static final String namespace = "http://tempuri.org/"; private static final String url = "http://nicolasdotar/ServicioAndroid/Service.asmx"; |
Code 2 - Declaración de variables en la clase GetServicio
Luego todo el desarrollo se encuentra en el ‘onCreate’:
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv = (TextView) findViewById(R.id.text1); try { //Modelo el request SoapObject request = new SoapObject(namespace, Metodo); //Modelo el Sobre SoapSerializationEnvelope sobre = new SoapSerializationEnvelope(SoapEnvelope.VER12); sobre.dotNet = true; sobre.setOutputSoapObject(request); //Modelo el transporte HttpTransportSE transporte = new HttpTransportSE(url); //Llamada transporte.call(accionSoap, sobre); //Resultado SoapPrimitive resultado = (SoapPrimitive) sobre.getResponse(); tv.setText("" + resultado.toString()); } catch (Exception e) { tv.setText(e.getMessage()); } } |
Code 3 - Evento Oncreate
Veamos el servicio web funcionando solo:
Fig. 6 - Servicio Web en funcionamiento local
Veamos la solución Android funcionando en el emulador consumiendo el servicio web:
Fig. 7 - Solución desplegada en el Emulador de Android
Finalmente, veamos como se construye paso a paso en el siguiente Vídeo:
Nicolas Bortolotti, Ingeniero U.T.N. Regional San Francisco - Comunidad Xcloud