none
Consumir Web Service RRS feed

  • Pregunta

  • Buenas tardes,

    Tengo un web service (.asmx) que recibe dos parámetros (enteros) y devuelve la suma.
    Quiero utiliar este servicio en una aplicación para windows phone pero no se como consumir el servicio.

    He agregado la referencia al servicio, pero a partir de ahí no se por dónde seguir. 


    ¿Teneis algún ejemplo en el que pueda ver como llamar al servicio?

    Muchas gracias

    lunes, 26 de marzo de 2012 17:05

Respuestas

  • Pues verás, la llamada al servicio es asíncrona, por lo que necesitas saber cuándo se ha completado. Por ello tienes que asociarle un manejador al evento Completed del servicio, para saber cuando se ha completado la llamada y poder obtener así el resultado en la propiedad Result del argumento que recibes en ese manejador.

    Vendría a ser algo así en VB:

    AddHandler servicio.SumaCompleted, AddresOf LlamadaCompletadaEventHandler

    martes, 27 de marzo de 2012 8:03

Todas las respuestas

  • Hola, pues es fácil. Sólo tendrás que crear una instancia del cliente soap del servicio, agregarle un delegado al evento completed de la llamada que quieras hacer al servicio y luego hacer la llamada asíncrona. Sería algo así:

    private void SumaButtonClick(object sender, RoutedEventArgs e) {
        var servicio = new ServicioSumaSoapClient();
        servicio.SumaCompleted += SumaCompletada;
        servicio.SumaAsync(a, b);
    }

    Y luego en el cuerpo de SumaCompletada recogerías el resultado en la propiedad Result de la variable que lleva los argumentos:

    void SumaCompletada(object sender, SumaCompletadaEventArgs e) {
                var suma = e.Result;
    }
    A grandes rasgos, vendría a ser algo parecido a esto.
    lunes, 26 de marzo de 2012 19:35
  • Muchas gracias Juan por la respuesta.

    Estoy programando en vb, esto del windows phone es nuevo para mí.  Esto sería lo que me has comentado:

    1 - Creo la instancia del cliente soap del servicio :

    Dim servicio As New ServiceReference1.Service1SoapClient

    2 - No comprendo lo de 'agregarle un delegado al evento completed de la llamada que quieras hacer al servicio'

    3 - Hacer llamada asíncrona:

    servicio.SumaAsync(1, 5)
    

    A ver si me puedes aclarar un poco la segunda parte, muchas gracias.

    martes, 27 de marzo de 2012 7:05
  • Pues verás, la llamada al servicio es asíncrona, por lo que necesitas saber cuándo se ha completado. Por ello tienes que asociarle un manejador al evento Completed del servicio, para saber cuando se ha completado la llamada y poder obtener así el resultado en la propiedad Result del argumento que recibes en ese manejador.

    Vendría a ser algo así en VB:

    AddHandler servicio.SumaCompleted, AddresOf LlamadaCompletadaEventHandler

    martes, 27 de marzo de 2012 8:03
  • Muchas gracias, funciona.  El codigo utilizado es este:

        Private Sub fx()
            Dim servicio As New ServiceReference1.Service1SoapClient
            AddHandler servicio.SumaCompleted, AddressOf SumaCompletada
            servicio.SumaAsync(1, 5)
        End Sub
     
        Public Sub SumaCompletada(sender As Object, e As ServiceReference1.SumaCompletedEventArgs)
            Obj = e.Result
        End Sub
    

    Un saludo.

    martes, 27 de marzo de 2012 8:25