Compartir a través de


Cómo: Llamar a un servicio Web de forma asincrónica

Actualización: noviembre 2007

En este ejemplo se adjunta un controlador a un evento de controlador asincrónico de un servicio web de manera que pueda recuperar el resultado de una llamada a método asincrónica. En este ejemplo se utiliza el servicio Web DemoTemperatureService de http://www.xmethods.net.

Cuando se hace referencia a un servicio web en un proyecto en el entorno de desarrollo integrado (IDE) de Visual Studio, se agrega al objeto My.WebServices y el IDE genera una clase de proxy cliente para tener acceso a un servicio web especificado.

La clase de proxy permite llamar sincrónicamente a los métodos del servicio Web, dónde la aplicación espera a que finalice la función. Además, el servidor proxy crea miembros adicionales como ayuda para llamar al método de forma asincrónica. Para cada función de servicio web, NameOfWebServiceFunction, el proxy crea una subrutina de NameOfWebServiceFunctionAsync, un evento NameOfWebServiceFunctionCompleted y una clase NameOfWebServiceFunctionCompletedEventArgs. En este ejemplo se muestra cómo utilizar los miembros asincrónicos para tener acceso a la función getTemp del servicio Web DemoTemperatureService.

Nota:

Este código no funciona en aplicaciones Web, porque ASP.NET no admite el objeto My.WebServices.

Para llamar asincrónicamente a un servicio Web

  1. Haga referencia al servicio Web DemoTemperatureService de http://www.xmethods.net. La dirección es

    http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
    

    Para obtener más información, vea Cómo: Obtener acceso a un servicio web en código administrado.

  2. Agregue un controlador de eventos para el evento getTempCompleted:

    Private Sub getTempCompletedHandler(ByVal sender As Object, _
        ByVal e As net.xmethods.www.getTempCompletedEventArgs)
    
        MsgBox("Temperature: " & e.Result)
    End Sub
    
    Nota:

    No puede utilizar la instrucción Handles para asociar un controlador de eventos a los eventos del objeto My.WebServices.

  3. Agregue un campo para efectuar el seguimiento si el controlador de eventos se ha agregado al evento getTempCompleted:

    Private handlerAttached As Boolean = False
    
  4. Agregue un método para agregar el controlador de eventos al evento getTempCompleted, si es necesario, y para llamar al método getTempAsynch:

    Sub CallGetTempAsync(ByVal zipCode As Integer)
        If Not handlerAttached Then
            AddHandler _
                My.WebServices.TemperatureService.getTempCompleted, _
                AddressOf Me.TS_getTempCompleted
            handlerAttached = True
        End If
        My.WebServices.TemperatureService.getTempAsync(zipCode)
    End Sub
    

    Para llamar al método Web getTemp de forma asincrónica, llame al método CallGetTempAsync. Cuando el método Web finaliza, el valor devuelto se pasa al controlador de eventos getTempCompletedHandler.

Vea también

Tareas

Cómo: Obtener acceso a un servicio web en código administrado

Conceptos

Acceso a los servicios Web de la aplicación

Referencia

My.WebServices (Objeto)