sábado, 30 de noviembre de 2013

Consumir Web Services Soap en Android (1/2)

Consumir Web Services Soap en Android (parte 1)

En esta primera parte vamos a construir un Servicio Web en la plataforma .Net el cual utiliza el estándar SOAP como mecanismo de comunicación.

Comencemos definiendo SOAP: Según la Wikipedia, es es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML

consumir web services soap en android-1/2
De esta manera, Un Web-Service hecho en Java, puede ser utilizado y consumido por una aplicación en otro lenguaje como Perl, Visual Basic, etc. Tal como lo muestra la imagen.

Requisitos para realizar este tutorial:

  • Visual Studio 2010
  • Internet Information Services (IIS)
Consideraciones previas:
Empezamos:
1. Agregar un proyecto de tipo Aplicación web vacía de ASP.NET  con nombre "WebServices"  a la solución Visitas_SLN

proyecto webservice
2. Agregar un nuevo elemento con nombre "WebServiceVisitas" de tipo Servicio Web al proyecto WebServices
agregar un webservice

3. Agregar un archivo de configuración web con nombre Web.config
agregar web.config

De manera que el explorador de soluciones debería ser así:

4. Abrir el elemento WebServiceVisitas.asmx y escribir el siguiente código:


Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports Entidades
Imports Negocios

' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
'<System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class WebServiceVisitas
    Inherits System.Web.Services.WebService

    <WebMethod()> _
    Public Function HelloWorld() As String
        Return "Hello World"
    End Function

    <WebMethod()> _
    Public Function ConsultarVendedores() As List(Of VendedorInfo)
        Dim n As New Vendedor
        Return n.ConsultarVendedores()
    End Function

    <WebMethod()> _
    Public Function ConsultarRutasPorVendedor(IdVendedor As Integer) As List(Of RutaInfo)
        Dim n As New Ruta
        Return n.ConsultarRutasPorVendedor(IdVendedor)
    End Function

    <WebMethod()> _
    Public Function ConsultarClientesPorRuta(IdRuta As Integer) As List(Of ClienteInfo)
        Dim n As New Cliente
        Return n.ConsultarClientesPorRuta(IdRuta)
    End Function

    <WebMethod()> _
    Public Function ConsultarTiposVisitas() As List(Of TipoVisitaInfo)
        Dim n As New TipoVisita
        Return n.ConsultarTiposVisitas()
    End Function

    <WebMethod()> _
    Public Function GrabarVisita(EsNuevo As Boolean, Visita As VisitaInfo) As Boolean
        Dim n As New Visita
        Return n.GrabarVisita(EsNuevo, Visita)
    End Function

    <WebMethod()> _
    Public Function ConsultarVisita(IdVisita As Integer) As VisitaInfo
        Dim n As New Visita
        Return n.ConsultarVisita(IdVisita)
    End Function

End Class

El atributo <WebMethod()> _  sirve para que el método marcado, pueda ser visto desde el exterior(exponer el método)

5. Correrlo, y aparecerá su navegador predeterminado enlistando los métodos expuestos a través del servicio web, como la siguiente pantalla:
probando el webservice

6. Comprobar que cada uno de los métodos funcionen correctamente
consumiendo un metodo

resultado xml

notar que el método GrabarVisita requiere que pasarle un objeto de tipo VisitaInfo, pero el formulario solo soporta ingreso de datos primitivos como integer, cadena, etc. Este objeto se lo vamos a pasar a través del android en la siguiente parte de este turorial.

7. Publicar el WebService en el IIS tal como lo indico en el tutorial de IIS ver la sección que dice "Publicar un website en IIS" son exactamente los mismos pasos para publicar un servicio web.

Al final deberá quedar algo así:
convertir a aplicacion

no olvidar habilitar el examen de directorios:
examen de directorios

Iniciar el servicio para visualizarlo, si tienen instalado wampp o xampp y está utilizando el servicio apache, es probable que les salga un error,  lo único que hay que hacer es detener el servicio apache desde el administrador de tareas.

Al examinar el servicio entramos a WebServiceVisitas.asmx y una vez mas probamos que todo funciona.

servicio web publicado localmente

Al final tendremos nuestro servicio web publicado localmente. hecho esto puedes continuar a la parte 2 de este tutorial. En la parte 2 se proporciona los enlaces de descarga para las fuentes completas.

Ver parte 2

Si te gusto este articulo,  suscribete a nuestra pagina de facebook!

No hay comentarios:

Publicar un comentario